Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Powershell- Wie bekomme ich die Befehlszeile in ein vernünftiges Script

Frage Entwicklung Batch & Shell

Mitglied: JoshuaTree

JoshuaTree (Level 1) - Jetzt verbinden

22.05.2013, aktualisiert 10:23 Uhr, 1851 Aufrufe, 6 Kommentare

Hallo,

ich habe Folgenden Aufruf.

Dieser gibt aus was ich haben möchte, nämlich Servernaname, Prozessname, Username und Speichernutzung.


01.
get-wmiobject win32_process|where{$_.name -eq "iexplore.exe"}|where{$_.ws -gt "300000000"}|select-object  __Server,WS,name,@{n="owner";e={$_.getowner().user}}|sort -descending WS

Jetzt möchte ich das in eine Schleife umbauen

So ungfähr


01.
 
02.
$Serverliste = get-content serverliste.txt 
03.
 
04.
ForEach ($Server in $Serverliste){ 
05.
get-wmiobject win32_process|where{$_.name -eq "iexplore.exe"}|where{$_.ws -gt "300000000"}|select-object  __Server,WS,name,@{n="owner";e={$_.getowner().user}}|sort -descending WS 
06.
 
07.
}



Jezt kommt meine Frage, ich möchte wenn die Speichernutzung einen Grenzwert überschritten hat ein Event auslösen. Ne Mail an die Admins. Wie bekomme ich diese Zeile auseinander gebaut so das ich die einzelnen Werte ansprechen kann? In dem Fall $_.WS denn wenn der zu groß ist soll ne Mail raus.

Vg
Andreas
Mitglied: JoshuaTree
22.05.2013 um 14:48 Uhr
Habe es verändert und es läuft noch schon mal gut

01.
$Serverlist = Get-Content serverliste.txt 
02.
 
03.
 
04.
ForEach ($Server in $Serverlist){ 
05.
 
06.
	get-wmiobject win32_process| 
07.
	where{$_.name -eq "iexplore.exe"}| 
08.
	where{$_.ws -gt "10000000"}| 
09.
	select-object  __Server,WS,name,@{n="owner";e={$_.getowner().user}}| 
10.
	sort -descending WS 
11.
 
12.
}
Ich würde gerne das Erbnis in eine Variable schreiben das ich meinen Event basteln kann.
Jetzt komme ich mit meinem Powershellwissen an meine Grenzen, wie kann ich das Ergebnis in eine Variable bekommen um es nach jedem Durchlauf(schleife) auswerten zu können?
Danke für die Hilfe
Bitte warten ..
Mitglied: filippg
22.05.2013 um 21:07 Uhr
Hallo,

nicht alles geht in einer Zeile... aber dafür gibt's ja Variablen.

Ungefähr:
01.
ForEach ($Server in $Serverliste){ 
02.
  $res = get-wmiobject win32_process| .... sort -descending WS 
03.
  if($res.WS -gt 300000){ 
04.
    write-host Warnung! Prozess: $($res.name), WS: $($res.WS) 
05.
06.
}
Gruß

Filipp
Bitte warten ..
Mitglied: JoshuaTree
23.05.2013, aktualisiert um 09:43 Uhr
Hallo,

leider scheint in die Variable $res nichts geschrieben zu werden.
Denn die Ausgabe bleibt leer.
01.
$Serverlist = Get-Content serverliste.txt 
02.
 
03.
ForEach ($Server in $Serverlist){ 
04.
	 
05.
	$res = get-wmiobject win32_process|where{$_.name -eq "dwm.exe"}|where{$_.ws -gt "100"}|select-object   
06.
 
07.
__Server,WS,name,@{n="owner";e={$_.getowner().user}}|sort -descending WS 
08.
	If($res.WS -gt 100){ 
09.
	write-host Warnung! Prozess: $($res.name), WS: $($res.WS)} 
10.
 
11.
write-host $res 
12.
}
Zur kontrolle habe ich die Zeile write-host $res mit rein genommen und hier wird nichts ausgegeben.

Gebe ich dagegen die Zeile direkt ein
01.
get-wmiobject win32_process|where{$_.name -eq "dwm.exe"}|where{$_.ws -gt "100"}|select-object __Server,WS,name,@{n="owner";e={$_.getowner().user}}|sort -descending WS
Erhalte ich ein Ergebnis:
__SERVER WS name owner
-- ---- -----
Server1 8941568 dwm.exe user1
Server1 8929280 dwm.exe user2
Server1 8921088 dwm.exe user3
Server1 8908800 dwm.exe user4

Woran liegt das?
Bitte warten ..
Mitglied: JoshuaTree
23.05.2013 um 11:02 Uhr
Habe gerade noch ein bißchen rumprobiert.

Wenn ich am Prompt Folgendes eingebe. Und danach $a erhalte ich alles wie ich es mir wünsche.
01.
$a=get-wmiobject win32_process|where{$_.name -eq "dwm.exe"}|where{$_.ws -gt "100"}|select-object  __Server,WS,name,@{n="owner";e={$_.getowner().user}}|sort -descending WS

Gebe ich allerdings write-host $a bekomme ich nichts zu sehen. Auch nicht wenn ich sage write-host $a.WS oder $a.name

Das ist strange, wäre nett wenn mir mal jemand eine kleine Starthilfe geben könnte. Dachte eigenlich das wäre keine große Sache mit Powershell
Bitte warten ..
Mitglied: filippg
23.05.2013 um 20:41 Uhr
Hallo,

das $a.name und $a.WS nicht funktionieren ist erklärbar (mein Fehler): get-wmiobject... wird i.a. nicht _ein_ Objekt liefern, sondern eine Liste (Vector ist glaube ich der genaue Datentyp bei Powershell). Diese hat kein Feld "name" oder "WS" (nur die darin enthaltenen Elemente), deswegen liefert $a.name auch keinen Wert.
Man müsste also noch über $a iterieren (foreach...). Allerdings sollte write-host $a trotzdem eine Ausgabe liefern.

Gruß

Filipp
Bitte warten ..
Mitglied: JoshuaTree
26.05.2013 um 13:17 Uhr
$a=get-content c:\temp\serverliste.txt


foreach($server in $a){

Get-Wmiobject win32_process -computer $server |
Where-Object {$_.name -like "iexplore.exe" -and $_.ws -gt "100000"} |
Select-Object __Server,WS,name,@{n="owner";e={$_.getowner().user}} |
ForEach-Object { write-host "Warnung! Auf Server: $($_.__Server),Prozess: $($_.name), WS: $($_.WS), User: $($_.owner)"}
}

Habe es bis dahin hin bekommen.

Möchte aber nicht das es am Bildschirm ausgegeben wird sonder in ein logfile welches nach Durchlauf das per smtp versendet wir falls ein logfile erstellt wurde (nur dann)

Versuchte jetzt mit:
ForEach-Object { out-file "c:\temp\log.txt" -append "Warnung! Auf Server: $($_.__Server
eins zu erzeugen doch da hagelte es nur Fehler.
Wo liegt der Fehler ? Kann mir da jemand weiter helfen?
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst PowerShell Script Move-Item nach x Tagen (5)

Frage von lupolo zum Thema Batch & Shell ...

VB for Applications
Powershell Script aus VBA heraus ausführen (2)

Frage von mcnico1978 zum Thema VB for Applications ...

Batch & Shell
gelöst Powershell-Script als Admin über CMD ausführen (2)

Frage von Tobiased zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...