Снимок экрана Я решил попробовать создать скрипт Powershell. Чтобы удалить принтеры, которых нет в $ StandardPrinterListe. Это работает около недели, а вчера уже не работает. Останавливается после проверки пары компьютеров. Буду признателен за любую помощь в этом вопросе. Если вы чувствуете, что можете также рассказать о том, как сценарий мог бы быть лучше, пожалуйста, дайте мне знать.
$Publikum = New-Object Collections.Generic.List[string]
$PublikumOnline = New-Object Collections.Generic.List[string]
$PublikumOffline = New-Object Collections.Generic.List[string]
$PrintListe = New-Object Collections.Generic.List[string]
$PrinterLokal = New-Object Collections.Generic.List[string]
$PrinterLokalFjernes = New-Object Collections.Generic.List[string]
$StandardPrinterListe = New-Object Collections.Generic.List[string]
$StandardPrinterListe = @('Microsoft Print to PDF', 'Send til OneNote 16', 'Microsoft XPS Document Writer', 'Fax','Send to OneNote 16')
$i = 0
foreach($c in Get-ADComputer -Filter {Name -like "*Name*"} -searchbase "Some SearchBase"){
$Publikum.Add($c.Name)
}
foreach($Element in $Publikum){
Write-Progress -Activity "Sjekker offline status" -Status "Progress:" -PercentComplete ($i/$Publikum.count*100)
Write-Host $Element
if (Test-Connection -ComputerName $Element -Quiet)
{
$PublikumOnline.Add($Element)
}
else
{
$PublikumOffline.Add($Element)
}
$i = $i+1
Write-Host $PublikumOffline.Count "Offline" -BackgroundColor “Red”
Write-Host $PublikumOnline.Count "Online" -ForegroundColor “Green”
}
$Left = $PublikumOnline.Count
$i = 0
foreach($Element in $PublikumOnline){
$PrintResultat = Invoke-Command -ComputerName $Element -ScriptBlock {
$Print = @{}
$Print.LokalPrint = Get-Printer
New-Object psobject -property $Print
}
foreach ($Printer in $PrintResultat.LokalPrint) {
if($Printer.Name -notin $StandardPrinterListe){
$PrinterLokalFjernes.Add($Printer.Name)
}
$PrinterLokal.Add($Printer.Name)
}
Write-Output $Element $PrinterLokal
if ($PrinterLokalFjernes)
{
foreach ($FjernePrinter in $PrinterLokalFjernes){
Write-Host $Element $FjernePrinter -BackgroundColor “Red”
}
. 'C:\Users\jonhstor-drift\Documents\Fjerne Lokale skrivere.ps1'
Fjern-Skriver -Session ([ref]$Element) -Target ([ref]$PrinterLokalFjernes)
}
else
{
Write-Host $Element "Har ikke pushprint" -ForegroundColor “Green”
}
$PrinterLokalFjernes.Clear()
$PrinterLokal.Clear()
$i = $i+1
$Left = $Left - 1
Write-Host $Left "igjen å sjekke"
Write-Progress -Activity "Progresjon" -Status "Progress:" -PercentComplete ($i/$PublikumOnline.count*100)
}
Read-Host -Prompt "Press Enter to exit"
function Fjern-Skriver([ref]$Session, [ref]$Target) {
foreach($Element in $Target.Value){
Invoke-Command -ComputerName $Session.Value -ScriptBlock {
C:\Windows\SysWOW64\rundll32.exe printui.dll,PrintUIEntry /n $using:Element /dl
Gpupdate /force
}
Write-Host "Har fjernet" $Element "fra maskin" $Session.Value -ForegroundColor “Green”
}
}