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-ID: 483438

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

Ausgedruckt am: 26.11.2024 um 03:11 Uhr

SeaStorm
SeaStorm 09.08.2019 um 07:58:14 Uhr
Goto Top
hi

verrätst du uns auch noch welche Befehle du dazu verwendest bisher?
Kiso222
Kiso222 09.08.2019 um 08:00:00 Uhr
Goto Top
Guten Morgen.

Du suchst eine foreach Schleife.


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

Grüße
Felix
xXEddiXx
xXEddiXx 09.08.2019 um 08:07:24 Uhr
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
Kiso222
Kiso222 09.08.2019 aktualisiert um 08:20:26 Uhr
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
SeaStorm
SeaStorm 09.08.2019 aktualisiert um 08:43:11 Uhr
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
SomebodyToLove
SomebodyToLove 09.08.2019 um 15:08:14 Uhr
Goto Top
Hiho,

du brauchst das invoke-command:

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

Damit sollte es denke ich klappen.