Назад | Перейти на главную страницу

Ошибка при запуске сценария PowerShell для резервного копирования зон DNS

У меня есть этот сценарий, который я пытаюсь запустить, и я надеюсь, что он будет создавать резервные копии зон 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.