xxeddixx
Goto Top

Remote Restart Script mit Powershell

Hallo in die Runde,

ich habe folgendes Anliegen:

Ich möchte ein Powershell-Script bauen welches Hostnamen von Servern aus dem AD ausliest und diese dann Remote-Neustartet. Da ich ein Powershell-Anfänger bin, komme ich nicht wirklich ans Ziel.

Den befehl zum Remote neustarten habe ich schon, genauso wie den zum Auslesen der Servernamen aus dem AD, jedoch bekomme ich es nicht hin diese zusammenzubringen. Ich habe schon versucht die Servernamen in eine csv zu exportieren und dann wieder als "Variable" zu importieren, leider ohne Erfolg. Die eleganteste Lösung ist dies ja auch nicht gerade, sinnvoller wäre es ja, wenn Powershell die ausgelesenen Daten direkt weiterverarbeitet.

Ich hoffe Ihr könnt mir helfen!

Vielen Dank!

Content-Key: 483438

Url: https://administrator.de/contentid/483438

Printed on: April 26, 2024 at 02:04 o'clock

Member: SeaStorm
SeaStorm Aug 09, 2019 at 05:58:14 (UTC)
Goto Top
hi

verrätst du uns auch noch welche Befehle du dazu verwendest bisher?
Member: Kiso222
Kiso222 Aug 09, 2019 at 06:00:00 (UTC)
Goto Top
Guten Morgen.

Du suchst eine foreach Schleife.


https://www.windowspro.de/script/schleifen-powershell-foreach-while-do-u ...

Grüße
Felix
Member: xXEddiXx
xXEddiXx Aug 09, 2019 at 06:07:24 (UTC)
Goto Top
Also bisher habe ich versucht folgende Befehle zusammenzuführen:

Get-ADComputer -Filter * -SearchBase "OU=Server,OU=123,DC=456, DC=789" | where -Property Name -Like TUDAG-MGM | select-table -property DNSHostName | Export-Csv C:\Server.csv

und

$YourFile = Import-csv c:\Server.txt

foreach ($computer in $YourFile)
{

Restart-Computer -ComputerName $computer -force
Member: Kiso222
Kiso222 Aug 09, 2019 updated at 06:20:26 (UTC)
Goto Top
Dein Import wird nicht funktionieren. Du willst eine .txt importieren.

Abgesehen davon ist das gar nicht nötig.

Speicher dir das oben direkt in eine Variable z.B. $allComputer.

$allComputer = (Get-ADComputer... | Where..). //(der Rest kann weg)

Deine Schleife:

foreach( $computer in $allComputer){
Restart-Computer -ComputerName $computer.dnshostname -force
}

Achtung: gecodet auf dem Handy. Evtl Anpassung nötig.

Grüße
Member: SeaStorm
SeaStorm Aug 09, 2019 updated at 06:43:11 (UTC)
Goto Top
dann sowas hier
$servers = (Get-ADComputer -SearchBase "OU=Server,OU=123,DC=456, DC=789" -Filter {OperatingSystem -like "*Server*"  } -Properties DNSHostName, cn | ? { $_.enabled }).Name  
Restart-Computer -ComputerName $servers -force

Das "-Properties DNSHostName, cn" brauchst du nicht.Ist nur zu Demonstrationszwecken da. Der Rest sollte selbsterklärend sein.
AFAIK kann Restart-Computer mit einem StringArray umgehen. Wills jetzt grad nicht testen :D
Member: SomebodyToLove
SomebodyToLove Aug 09, 2019 at 13:08:14 (UTC)
Goto Top
Hiho,

du brauchst das invoke-command:

Invoke-Command -ComputerName $computer {Restart-Computer -force}

Damit sollte es denke ich klappen.