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 "")
-
{
-
# 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;
-
}
-
}
-
}
-
}

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











