мой сценарий внезапно останавливается после работы, как предполагалось в течение 1 недели - PullRequest
0 голосов
/ 15 января 2020

Снимок экрана Я решил попробовать создать скрипт 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”
 }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...