locked
"exit" im PS Script greift nicht bei Windows 8 RRS feed

  • Frage

  • Hallo,

    ich habe ein Script zum umziehen von Netzwerkdruckern erstellt.

    if ($drucker -notlike $serveralt)
    {
    Write-Host "Es sind keine alten Drucker vorhanden"
    exit
    }
    else
    {}
    #Standarddrucker bestimmen
    $standarddruckeralt = $drucker | Where {$_.Default -like "True"}

    In der ersten if-else habe ich ein exit welches unter Windows XP und Windows 7 auch funktioniert, nur unter Windoes 8 läuft das Script weiter.

    Warum macht Win8 das?


    Montag, 24. Juni 2013 09:13

Antworten

  • Exit verhält sich unter Win8, bzw. Powershell V3 genauso (zumindest was deinen Fall angeht) wie V2.

    Es gibt zwar einige Bugs bezüglich Exit in V3 (http://connect.microsoft.com...) aber das betrifft deinen Fall nicht.

    ich gehe daher davon aus, das deine Bedingung

    ($drucker -notlike $serveralt)

     

    schlicht nicht erfüllt ist. Um da weiter zu helfen müsstest du allerdings mal den Rest posten und erklären was es genau damit auf sich hat.

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere gute Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).

    Montag, 24. Juni 2013 11:22
    Moderator

Alle Antworten

  • Exit verhält sich unter Win8, bzw. Powershell V3 genauso (zumindest was deinen Fall angeht) wie V2.

    Es gibt zwar einige Bugs bezüglich Exit in V3 (http://connect.microsoft.com...) aber das betrifft deinen Fall nicht.

    ich gehe daher davon aus, das deine Bedingung

    ($drucker -notlike $serveralt)

     

    schlicht nicht erfüllt ist. Um da weiter zu helfen müsstest du allerdings mal den Rest posten und erklären was es genau damit auf sich hat.

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere gute Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).

    Montag, 24. Juni 2013 11:22
    Moderator
  • Problem gelöst:

    wenn "$drucker" keinen Inhalt hat, soll das Script stoppen.

    Hier mal das ganze Script, funktioniert aber in der Form nur wenn die Druckernamen gleich bleiben und sich nur der Server ändert.

    $date = get-date
    $systemname = $(Get-WmiObject Win32_Computersystem).name
    $user = $Env:USERNAME
    
    $serveralt = "*serveralt*"
    #Drucker auflisten
    $drucker = Get-WMIObject Win32_Printer | where {$_.SystemName -like $serveralt}
    
    if (!$drucker)
    {
    Write-Host "Es sind keine alten Drucker vorhanden"
    exit
    }
    else
    {}
    #Standarddrucker bestimmen
    $standarddruckeralt = $drucker | Where {$_.Default -like "True"}
    
    #nicht Standarddrucker bestimmen
    $druckeralt = $drucker | where {$_.Default -like "False"}
    
    $standarddruckerneu = $standarddruckeralt.DeviceID | Foreach {
        $_ -replace 'serveralt', 'serverneu' `
        }
    $druckerneu = $druckeralt|%{$_.DeviceID} | Foreach {
        $_ -replace 'fs-dom-02', 'fs-depo-01' `
        } # Alte Drucker entfernen $drucker | foreach{$_.delete()} # neue Drucker installieren $d = [WMIClass]“\\.\root\cimv2:Win32_Printer“ if ($standarddruckerneu) { Write-Host "es wird ein neuer Standarddrucker installiert" $standarddruckerneu | foreach{$d.AddPrinterConnection($_)} } else {} if ($druckerneu) { Write-Host "es werden neue Drucker installiert" $druckerneu | foreach{$d.AddPrinterConnection($_)} } else {} function sendMail{ Write-Host "Sending Email" #SMTP server name $smtpServer = "mailserver" #Creating a Mail object $msg = new-object Net.Mail.MailMessage #Creating SMTP server object $smtp = new-object Net.Mail.SmtpClient($smtpServer) #Email structure $msg.From = "helpdesk@company.com" $msg.ReplyTo = "$user@company.com" $msg.To.Add("helpdesk@company.com, $User@company.com") $msg.subject = "Neuinstallation der Drucker durchgeführt für $user auf $systemname" $msg.body = "Die Drucker $standarddruckerneu $druckerneu wurden am $date auf dem PC: $systemname unter dem User: $user neu installiert." #Sending email $smtp.Send($msg) } #Calling function sendMail



    Montag, 24. Juni 2013 11:22
  • Dacht ichs mir doch. :)

    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere gute Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).

    Montag, 24. Juni 2013 11:23
    Moderator