Powershell Script um Remote Befehle auszuführen

 In Entwicklung

Heute gibt es ein kleines Script um gezielt auf mehreren Clients innerhalb eines Netzwerks ein oder mehrere Jobs auszuführen.
Das kann das Hinzufügen\Bearbeiten von Registrierungseinträgen sein, das Ausführen normaler CMD Befehle, das starten einer Anwendung oder anderes sein.

Es dient sicherlich als Alternativlösung, da oft nicht alle bis keine Clients immer über PsExec aus der PSTool-Sammlung verfügen.

In einer *.txt Datei wird pro Zeile ein Computername angegeben. Powershell durchläuft diese mit einer Schleife und für pro Gerät die gewünschten Befehle aus.

RemoteComputers.txt

1
2
3
Client1
Client2
Client3

In der *.ps1 fügst du folgenden Code ein.

Remote_Command_Exec.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Enable-PSRemoting -Force
 
$domainuser = 'Your-Domain\Username'
$domainpassword = 'Your-Passwort' | ConvertTo-SecureString -AsPlainText -Force
$domaincredentials = New-Object System.Management.Automation.PSCredential ($domainuser, $domainpassword)
 
$RemoteComputers = Get-Content "C:\RemoteComputers.txt"
$ComputerStatus = "C:\Status.txt"
 
ForEach ($Computer in $RemoteComputers)
{
Try
{
$client = $Computer
$Client += " - OK"
Invoke-Command -ComputerName $Computer -ScriptBlock { cmd /c ipconfig /flushdns } -credential $domaincredentials -ErrorAction Stop
Invoke-Command -ComputerName $Computer -ScriptBlock { cmd /c ipconfig /registerdns } -credential $domaincredentials -ErrorAction Stop
Add-Content $ComputerStatus -Value $client
}
Catch
{
$client = $Computer
$Client += " - ERROR (Client not online?)"
Add-Content $ComputerStatus -Value $client
}
}

In diesem Beispiel wird einmal ein „ipconfig /flushdns“ und ein „ipconfig /registerdns“ ausgeführt.

Beachte, dass du die Angaben die Domain, Benutzername, Passwort und ggf. den Pfad noch anpassen musst.
Gleichzeitig wird am Ende eine „Status.txt“ geschrieben, der man im Anschluss ein kurzes Ergebniss entnehmen kann. Das Ergebnis könnte auch um ein $_.Exception.Message erweitert werden um im Falle eines Fehlers eine genauere Fehlermeldung zu erhalten.

Sollte jemandem die fest gespeicherten Zugangsdaten ein Dorn im Auge sein, können die drei Zeilen gelöscht werden und im auszuführenden Kommando die Zeile „-credential $domaincredentials“ gelöscht werden. Dann reicht es, wenn man die PowerShell selbst als Administrator ausführt.



Beginnen Sie mit der Eingabe und drücken Sie Enter, um zu suchen