簡體   English   中英

刪除不需要的網絡打印機

[英]Delete unwanted network printers

我們的打印機由 Gpos 分發,並由與打印機具有(幾乎)同名的計算機組分配(例如“prn-accounting”等)。 我正在嘗試編寫一個腳本來查找計算機所在的廣告打印機組並刪除其他不需要的網絡打印機。 該腳本應該在登錄時運行。

我不知道如何獲取數組 $networkPrintersBad 中表示的不需要的打印機。 變量 $networkPrintersBad 也是空的...


$strName = $env:computername
$printers = @()
$groups = @()
$networkPrintersGood = @()
$networkPrintersAll = @()

# look up LDAP
$strFilter = "(&(objectCategory=Computer)(Name=$strName))"
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.Filter = $strFilter
$objPath = $objSearcher.FindOne()
$objComputer = $objPath.GetDirectoryEntry()

# remove distinguished name and "-nodefault" from groupname
$groups = (($objComputer.memberOf -replace 'CN=(.+?),(OU|DC)=.+','$1') -replace "-nodefault","")

# filter printer groups
foreach ($group in $groups) {
    if ($group.StartsWith("mfc") -or $group.StartsWith("cop") -or $group.StartsWith("prn") -or $group.EndsWith("armband") -or $group.StartsWith("pdf")) {
        $printers += $group
    }
}
# add path
$networkPrintersGood = $printers | ForEach-Object {"\\srv-print01\$_"}

# get all existing printers from the pc
$networkPrintersAll = (Get-WmiObject -Class Win32_Printer | where {($_.Network -eq ‘true‘)}).name

# problem nr 1
$networkPrintersBad = ($networkPrintersAll | ? ($_ -notin $networkPrintersGood))


Write-Host "All:"
$networkPrintersAll
Write-Host "Supposed to stay:"
$networkPrintersGood
Write-Host "Those that should be removed:"
$networkPrintersBad
# $networkPrintersBad | ForEach-Object { Remove-Printer $_ }

分配 $networkPrintersBad 時,您似乎缺少花括號。

$networkPrintersBad = $networkPrintersAll | Where-Object ({$_ -notin $networkPrintersGood})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM