Установите принтеры из файлов XML - PullRequest
0 голосов
/ 07 мая 2019

Я выполнил резервное копирование принтеров из системы Windows 10 в файлы XML. Я пытаюсь добавить их с помощью Set-Printconfiguration CMDLET, но, похоже, переменные не принимаются?

Я искал повсюду, но не могу найти ничего, говорящего, что мой синтаксис неправильный.

#get list of printers in backup folder
$printerNames = (Get-ChildItem -Path c:\temp\printers\*.xml -Recurse | select name).name
    foreach ($printer in $printerNames)
        {
        Set-PrintConfiguration -PrinterName $printer -PrintTicketXml c:\temp\printers\$printer
        }

Вот код, который я использовал для получения файлов принтера XML:

$TARGETDIR = "c:\temp\printers"
if(!(Test-Path -Path $TARGETDIR )){
    New-Item -ItemType directory -Path $TARGETDIR
}

# Get all the printers:
    $PN = (get-printer | select name).name

# Foreach loop to create XML file for each printer configuration
    Foreach ($P in $PN){
    $GPC = get-printconfiguration -PrinterName $P
    mkdir c:\temp\printers\$P 
    $GPC.PrintTicketXML | out-file C:\Temp\printers\$P.xml
# $p|select *|out-file -Path c:\temp\$p.xml -NoTypeInformation
    }

edit: вот ошибка, которую я получаю:

Set-PrintConfiguration : The specified printer was not found.
At U:\PowerShell\Scripts\backup\newRestorePrinters.ps1:15 char:9
+         Set-PrintConfiguration -PrinterName $printer -PrintTicketXml  ...
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (MSFT_PrinterConfiguration:ROOT/StandardCi...erConfiguration) [Set-PrintConfiguration], CimException
    + FullyQualifiedErrorId : HRESULT 0x80070709,Set-PrintConfiguration

редактировать Я добавил дополнительные переменные, чтобы получить список принтеров без .XML в конце имен. Это все еще дает мне ту же ошибку вывода. Похоже, он не передает мои переменные в команду set-printconfiguration ?

Новый код сценария восстановления:

$printerShortNameList = (Get-ChildItem -Path c:\temp\printers\*.xml -Recurse | select name).name
    foreach ($shortName in $printerShortNameList)
        {
        $shortName.Replace('.xml', "x")
        }

#get list of printers in backup folder
$printerNames = (Get-ChildItem -Path c:\temp\printers\*.xml -Recurse | select name).name
    foreach ($printer in $printerNames)
        {
        Set-PrintConfiguration -PrinterName $shortName -PrintTicketXml c:\temp\printers\$printer
        }

Ответы [ 2 ]

1 голос
/ 07 мая 2019

Какое было сообщение об ошибке? Разве вы не должны взять «.xml» с конца $ printer для имени принтера? Я думаю, что вы должны сначала использовать add-printer. Я не верю, что Set-PrintConfiguration создает принтеры.

Внизу, когда вы создаете XML-файлы, почему вы создаете каталог c: \ temp \ printers \ $ p?

0 голосов
/ 07 мая 2019

Set-PrintConfiguration

Для использования Set-PrintConfiguration требуются учетные данные администратора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...