我有这个我试图运行的脚本,我希望能备份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
#——————————————————————————————-#
当我运行脚本时,我收到以下消息:
我不确定这条消息是什么意思。我尝试输入我的计算机名称,但这也不起作用。
感谢任何帮助!
答案 0 :(得分:0)
从第2行开始:
$DNSSERVER=get-content env:computername
应该是:
$DNSSERVER = $Env:Computername
错误在这一行:
$List = get-WmiObject -ComputerName $DNSSERVER -Namespace root\MicrosoftDNS -Class MicrosoftDNS_Zone
确保它在同一行而不是单独的行,它正在请求gwmi命令的类,但由于它在另一行,它没有接受它。因为该类确实存在in here所以问题应该在该特定行中。
另一点是它正在寻找DNS类,所以只有在Windows服务器上安装了DNS功能或角色时才能工作。