Windows-Server-2012-R2

執行 powershell 腳本備份 DNS 區域時出錯

  • June 2, 2017

我有這個我正在嘗試執行的腳本,我希望它能備份 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
#——————————————————————————————-#

當我執行腳本時,我收到以下消息:

在此處輸入圖像描述

我不確定這條消息在說什麼。我嘗試輸入我的電腦名稱,但這也不起作用。

任何幫助表示讚賞!

從第 2 行開始:

$DNSSERVER=get-content env:computername

應該:

$DNSSERVER = $Env:Computername

錯誤在這一行:

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

確保它在同一行而不是單獨的行上,它正在為 gwmi 命令請求類,但由於它在另一行中,所以它不接受它。因為該類確實存在於此處,所以問題應該出在該特定行中。

另一點是它正在尋找 DNS 類,因此只有在 Windows 伺服器上安裝了 DNS 功能或角色時才會起作用。

引用自:https://serverfault.com/questions/853679