NetSendAll Teil 1: PowerShell-Funktion PingPC

URL dieses Beitrags: http://blog.stefan-macke.com/2008/05/01/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).

  1. # Pings the given PC to find out whether it is online.
  2. # Checks the IP address for the correct subnet.
  3. function PingPC($pcname)
  4. {
  5.         trap
  6.         {
  7.                 write-host ($pcname + " threw an error: " + $_.exception.message) -foregroundcolor "red";
  8.                 continue;
  9.         }
  10.         # change this value to your subnet
  11.         $subnet = "192.168.";
  12.         if ($pcname.trim -ne "")
  13.         {
  14.                 $pingsender = new-object system.net.networkinformation.ping;
  15.                 # timeout = 500ms
  16.                 $ping = $pingsender.send($pcname, 500);
  17.                 if ($ping.status -ne "Success")
  18.                 {
  19.                         write-host ($pcname + " does not respond to ping") -foregroundcolor "red";
  20.                         return $false;
  21.                 }
  22.                 else
  23.                 {
  24.                         if (!$ping.address.tostring().startswith($subnet))
  25.                         {
  26.                                 write-host ($pcname + " is not in subnet " + $subnet) -foregroundcolor "magenta";
  27.                                 return $false;
  28.                         }
  29.                         else
  30.                         {
  31.                                 write-host ($pcname + " is online") -foregroundcolor "green";
  32.                                 return $true;
  33.                         }
  34.                 }
  35.         }
  36. }
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.

Füge diesen Artikel zu deinen Bookmarks hinzu Diese Icons verzweigen auf soziale Netzwerke bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • del.icio.us
  • bodytext
  • MisterWong
  • Reddit
  • Technorati
  • Spurl
  • description

Kommentare zu diesem Beitrag

  1. Gravatar NetSendAll Teil 2: PowerShell-Funktion ReadTextFile » Stefan Macke
    Am 2. May 2008 um 14:32 Uhr

    [...] Impressum « NetSendAll Teil 1: PowerShell-Funktion PingPC [...]

  2. Gravatar PowerShell: Verfügbaren Hauptspeicher (RAM) für mehrere PCs ermitteln » Stefan Macke
    Am 25. November 2008 um 13:33 Uhr

    [...] aus dem Active Directory füllen lassen und vor dem Ermitteln der PC-Informationen prüfen, ob der PC online ist. Füge diesen Artikel zu deinen Bookmarks hinzu Diese Icons verzweigen auf soziale Netzwerke bei [...]

Einen Kommentar schreiben

XHTML: Diese Tags sind erlaubt: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>