JamesTorri 10 Posted August 13, 2014 Report Posted August 13, 2014 Hallo zusammen Ich hab hier einen Powershell-Script und eine Inputdatei (welche die Servernamen beinhaltet, welche abgefragt werden sollen). Der Powershellscript überprüft Dienste, welche auf "Automatic" gestellt, jedoch nicht gestartet sind. Der Powershellscript sieht wie folgt aus (und funktioniert eigentlich einwandfrei): Get-content getserviceslist.txt | forEach { Get-WmiObject Win32_Service |` where {($_.startmode -like "*auto*") -and ` ($_.state -notlike "*running*")}|` select DisplayName,Name,StartMode,State|ft -AutoSize } Das Inputfile "getserviceslist.txt" sieht inhaltlich wie folgt aus: SERVER01 SERVER02 Der Output, welcher in der Powershell generiert wird, sieht wie folgt aus: DisplayName Name StartMode State ----------- ---- --------- ----- Software Protection sppsvc Auto Stopped DisplayName Name StartMode State ----------- ---- --------- ----- Software Protection sppsvc Auto Stopped Meine Problematik liegt darin, dass im Output nicht ersichtlich ist, welcher Server abgefragt wurde. Sehr hilfreich wäre dann, dass irgendwo zum Output der Servername genannt wird. Ich danke Euch für die Unterstützung.
Dukel 468 Posted August 13, 2014 Report Posted August 13, 2014 Der wichtigste Teil fehlt. Wo und wie generierst du den Output? Evtl. ein " $_ ; " vor das Get-WmiObject. Ansonsten ein PSComputerName oder SystemName in das select aufnehmen.
JamesTorri 10 Posted August 14, 2014 Author Report Posted August 14, 2014 Hallo Dukel Bis anhin habe ich den Output nur in der Powershell Console generiert. Werde aber später alles in einer Datei umleiten. Ich hatte leider schon ein bisschen Mühe, "meinen" einfachen Befehl zu generieren (ist natürlich aus Beispiel im Internet zusammengesetzt). Wie würden deine Hinweise im Script aussehen?
Dukel 468 Posted August 14, 2014 Report Posted August 14, 2014 Ich würde mir mal die Grundlagen der Powershell aneignen. Das Script könnte folgendermaßen aussehen: Get-content getserviceslist.txt | forEach { $_ ; Get-WmiObject Win32_Service |`where {($_.startmode -like "*auto*") -and `($_.state -notlike "*running*")}|`select DisplayName,Name,StartMode,State|ft -AutoSize } oder Get-content getserviceslist.txt | forEach { Get-WmiObject Win32_Service |`where {($_.startmode -like "*auto*") -and `($_.state -notlike "*running*")}|`select SystemName,DisplayName,Name,StartMode,State|ft -AutoSize }
4077 30 Posted August 14, 2014 Report Posted August 14, 2014 Fehlt nicht der Computername-Parameter bei Get-WmiObject Win32_Service -Computername $_?
Dukel 468 Posted August 14, 2014 Report Posted August 14, 2014 Stimmt. Dieses fehlt auch. Ist mir erst gar nicht aufgefallen. Wäre dann dem TO aufgefallen, wenn der Rechnername mit aufgenommen wurde.
JamesTorri 10 Posted August 14, 2014 Author Report Posted August 14, 2014 Danke Leute, ihr seit perfekt. Mein Skript sieht jetzt so aus und funktioniert einwandfrei: Get-content getserviceslist.txt | forEach { Get-WmiObject Win32_Service -Computername $_ |` where {($_.startmode -like "*auto*") -and ` ($_.state -notlike "*running*")}|` select SystemName,DisplayName,Name,StartMode,State|ft -AutoSize } Und ich habe begonnen, Powershell Grundlagen anzueignen ;-)
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now