Я пытался автоматизировать добавление общих принтеров на наших сетевых серверах и добавить их в файл XML, чтобы я мог импортировать xml в настройки принтера GPO.
Вот код Я использую (test.csv содержит 3 сервера):
$shops = (Import-Csv C:\test.csv).Name
foreach ($shop in $shops)
{
$Serverip = (Test-Connection -ComputerName $shop -count 1).IPV4Address.IPaddressToString
$a,$b,$c,$d = $Serverip.split(".")
$FilterMin = "$a.$b.$c.0"
$FilterMax = "$a.$b.$c.254"
$Server = (Get-Printer -ComputerName $shop | where {$_.PortName -like "10.1*" -and $_.Shared -like "True"}).ComputerName
$Printer = (Get-Printer -ComputerName $shop | where {$_.PortName -like "10.1*" -and $_.Shared -like "True"}).Name
$SharedP = "\\" + $server + "\" + $Printer
$path = 'C:\Desktop\printers_test.xml'
$xml = [xml](Get-Content $path)
$CurrentDateTime = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$uid = "{" + [System.Guid]::NewGuid().toString() + "}"
$newPrinter = $xml.Printers.SharedPrinter.Clone()
$newprinter.uid="$uid"
$newPrinter.status="$Printer"
$newPrinter.name="$printer"
$newPrinter.changed="$CurrentDateTime"
# XML Properties
$newPrinter.Properties.default="1"
$newprinter.Properties.path="$SharedP"
$newPrinter.Properties.action="R"
# XML Filters
$newPrinter.Filters.FilterIpRange.max="$FilterMax"
$newPrinter.Filters.FilterIpRange.min="$FilterMin"
$xml.Printers.AppendChild($newPrinter)
$xml.Save($path)
}
Почему-то при запуске l oop я получаю следующие ошибки:
Свойство 'uid' не может быть найдено на этом объекте. Убедитесь, что свойство существует и может быть установлено.
Свойство 'status' не может быть найдено для этого объекта. Убедитесь, что свойство существует и может быть установлено.
Свойство 'имя' не может быть найдено для этого объекта. Убедитесь, что свойство существует и может быть установлено.
Похоже, что настройки из файла XML очищаются во время l oop.
Я что-то делаю неправильные или отсутствующие шаги?