NetSendAll Teil 1: PowerShell-Funktion PingPC

Heute und in den nächsten zwei Tagen werde ich hier ein PowerShell-Script vorstellen, das es mir erlaubt, alle PCs in unserem Netzwerk per net send mit einer Nachricht zu versorgen, obwohl sich diese in unterschiedlichen Subnets befinden. Laut diesem Beitrag in der Microsoft Knowledge Base ist das nämlich weder mit net send * noch mit net send /domain:Domäne möglich: Der Windows Nachrichtendienst.

Fangen wir zunächst einmal damit an, einen Ping an die PCs abzusetzen, um zu kontrollieren, ob diese online sind. Dazu habe ich mir eine kleine Funktion geschrieben, die genau dies tut und außerdem prüft, ob der angepingte PC überhaupt zu unserem Netzwerk gehört (oder fälschlicherweise z.B. als Internetadresse aufgelöst wurde).

# Pings the given PC to find out whether it is online. # Checks the IP address for the correct subnet. function PingPC($pcname) { trap { write-host ($pcname + " threw an error: " + $_.exception.message) -foregroundcolor "red"; continue; } # change this value to your subnet $subnet = "192.168."; if ($pcname.trim -ne "") { $pingsender = new-object system.net.networkinformation.ping; # timeout = 500ms $ping = $pingsender.send($pcname, 500); if ($ping.status -ne "Success") { write-host ($pcname + " does not respond to ping") -foregroundcolor "red"; return $false; } else { if (!$ping.address.tostring().startswith($subnet)) { write-host ($pcname + " is not in subnet " + $subnet) -foregroundcolor "magenta"; return $false; } else { write-host ($pcname + " is online") -foregroundcolor "green"; return $true; } } } }

Beispielausgabe der PowerShell-Funktion PingPC

Morgen geht es dann weiter mit einer Funktion, die Informationen über PCs aus einer Textdatei ausliest und diese als anonyme Objekte bereitstellt.

Über Stefan

Polyglot Clean Code Developer

4 Kommentare

  1. Pingback:NetSendAll Teil 2: PowerShell-Funktion ReadTextFile » Stefan Macke

  2. Pingback:PowerShell: Verfügbaren Hauptspeicher (RAM) für mehrere PCs ermitteln » Stefan Macke

  3. Hello,
    I’ve merged the 3 scripts but it do not works as I would like.
    The script sends to 2 or 3 PCs and sudden I get a lit of error messages.
    “Threw an error…..does not respond to ping”
    All the PCs with this error are not on the Pcs.txt file.
    Wht’s wrong ? Below the script I use.
    Thank You and best regards

  4. Take a look at the exception message the script prints out. That should give you a hint at what’s wrong.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax