运行 powershell 脚本备份 DNS 区域时出错

运行 powershell 脚本备份 DNS 区域时出错

我有这个脚本,希望它能备份 DNS 区域。我尝试使用 export-csv powershell cmdlet 将此信息导出到 csv 文件中。最后,我使用 dnscmd.exe 命令将区域信息导出到文本文件中,并将其存储在定义的位置。

 # Get Name of the server with env variable
$DNSSERVER=get-content env:computername

#—Define folder where to store backup  —–#
$BkfFolder=”c:\windows\system32\dns\backup”

#—Define file name where to store Dns Settings
$StrFile=Join-Path $BkfFolder “input.csv”

#—-Check if folder exists. if exists, delete contents–#
if (-not(test-path $BkfFolder)) {
new-item $BkfFolder -Type Directory | Out-Null
} else {

Remove-Item $BkfFolder”\*” -recurse
}

#—- GET DNS SETTINGS USING WMI OBJECT ——–#
#– Line wrapped should be only one line –#
$List = get-WmiObject -ComputerName $DNSSERVER
-Namespace root\MicrosoftDNS -Class MicrosoftDNS_Zone

#—-Export information into input.csv file —#
#– Line wrapped should be only one line –#
$list | Select Name,ZoneType,AllowUpdate,@{Name=”MasterServers”;Expression={$_.MasterServers}},
DsIntegrated | Export-csv $strFile -NoTypeInformation

#— Call Dnscmd.exe to export dns zones
$list | foreach {
$path=”backup\”+$_.name
$cmd=”dnscmd {0} /ZoneExport {1} {2}” -f $DNSSERVER,$_.Name,$path
Invoke-Expression $cmd
}

# End of Script
#——————————————————————————————-#

当我运行脚本时,我收到以下消息:

在此处输入图片描述

我不太清楚这条消息到底是什么意思。我尝试输入我的计算机名称,但也没有用。

任何帮助都将不胜感激!

答案1

从第 2 行开始:

 $DNSSERVER=get-content env:computername

应该:

$DNSSERVER = $Env:Computername

错误出现在这一行:

$List = get-WmiObject -ComputerName $DNSSERVER -Namespace root\MicrosoftDNS -Class MicrosoftDNS_Zone

确保它在同一行而不是单独的行,它正在请求 gwmi 命令的类,但由于它在另一行,所以它没有接受它。因为该类确实存在在这里所以问题应该出在那一行。

另一点是,它正在寻找 DNS 类,因此只有在 Windows 服务器上安装了 DNS 功能或角色时才会起作用。

相关内容