У меня есть этот сценарий, который я пытаюсь запустить, и я надеюсь, что он будет создавать резервные копии зон DNS. Я пытаюсь экспортировать эту информацию в файл csv с помощью командлета export-csv powershell. Наконец, я использую команду 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.