web-dev-qa-db-ja.com

PrintServerから(ワイルドカードを使用して)すべてのプリンタをインストールする方法

powerShellなどのコンソールを介してプリントサーバーからすべてのプリンターをすばやく簡単にインストールする方法はありますか?

PowerShellのAdd-Printerはワイルドカードをサポートしていません。

Get-PrinterとForEachで試してみました

Get-Printer -ComputerName print-server | Select  name > Printers.txt

ForEach ($Printer in Get-Content "Printers.txt")
{
Add-Printer -ConnectionName \\print-server\"$Printer"
}

しかし、サーバー名にアクセスできないか無効であるというメッセージしか表示されません。 powershlelでは、$ Printerが印刷名に置き換えられていないことを確認します。しかし、Write-Host $ Printerを使用すると、これは機能します。

2
Roger

プリンターをテキストファイルにパイプしてから、基本的な文字列として読み戻して使用しようとする代わりに、Get-Printerから返されたオブジェクトのプロパティを使用します。

例えば。:

# Get list of printers from computer "print-server".
$Printers = Get-Printer -ComputerName print-server

# Iterate through the returned list of printers.
ForEach ($Printer in $Printers)
{
    # Check to see if the current printer is shared or not.
    If ($Printer.Shared) {
        # If it's shared, add it by using the print server name and printer name properties of the current printer object.
        Add-Printer -ConnectionName "\\$($Printer.ComputerName)\$($Printer.Name)"
    }
}
3

スクリプトが正しく機能するには、選択したプリントサーバー上のプリンターに必要なすべてのアクセス許可を追加する必要があります。問題のプリンタ(SelectPrinter)は、セキュリティ設定をプルするためにスクリプトで使用されます。

(Get-Printer 'SelectPrinter' Full).PermissionSDDL | Out-File 'C:\PrinterSecurity.txt' | $perms = Get-Content 'C:\PrinterSecurity.txt' | Set-Printer '*' -PermissionSDDL $perms. 

これにより、問題のプリントサーバー上の既存のすべてのプリンタにアクセス許可が追加されます。

プリントサーバーからローカルでコマンドを実行します。

1
TMcClenahan