我最近開始使用非常基本的行/腳本進入 PowerShell。我需要一些關于我在用戶登錄時運行的列印機腳本的幫助。
目前,每次用戶登錄時都會運行列印機腳本(即使添加了列印機,它也會重新添加它們)。每次都需要一段時間,我覺得我可以更聰明地了解如何做到這一點。
我想將腳本重新配置為僅在列印機不存在時運行。
下面是我的代碼:
add-printer -connectionname "\\PRINT01.mydomain.local\L1-Printer1"
add-printer -connectionname "\\PRINT01.mydomain.local\L1-Printer2"
add-printer -connectionname "\\PRINT01.mydomain.local\L1-Printer3"
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" -Name "LegacyDefaultPrinterMode" -Value 1 –Force
$wsnObj = New-Object -COM WScript.Network
$wsnObj.SetDefaultPrinter("\\PRINT01.mydomain.local\L1-Printer1")
出于隱私目的,實名已被編輯!
編輯
Get-Printer 輸出如下:
Name ComputerName Type DriverName PortName Shared Published DeviceType
---- ------------ ---- ---------- -------- ------ --------- ----------
Microsoft XPS Document Writer Local Microsoft XPS Document... PORTPROMPT: False False Print
L1-Printer1 Local HP Laserjet 700 PCL6 PORTPROMPT: True False Print
uj5u.com熱心網友回復:
繼續我的評論,您可以采取以下方法:
$printersList = @('L1-Printer1','L1-Printer2','L1-Printer3')
$printersList | ForEach-Object -Begin {
$printersMapped = Get-Printer
} -Process {
if ($_ -in $printersMapped.Name) {
Write-Verbose -Message "$_ already mapped!"
#continue
}
else {
Write-Verbose -Message "Mapping printer $_"
Add-Printer -ConnectionName ("\\PRINT01.mydomain.local\" $_)
}
} -End {
# if printer is default do nothing.
# else: set default.
}
我們可以創建一個應該存在的列印機陣列。回圈遍歷每一個,同時進行一次呼叫Get-Printer以檢查它是否存在。如果不是,則映射列印機。
子句中有一些sudo 代碼,-End如果尚未設定,您可以實作將列印機設定為默認值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/414551.html
標籤:
