getr0ffen
Goto Top

Power Shell verdeckte Ausgabeinformationen

Ich habe ein kleines dummes Problemchen.

Und zwar würde ich mir gerne Informationen per PS anzeigen lassen.

Ich nehme mal folgendes Beispiel:
Get-Process | Sort-Object cpu | select -first 5

wenn ich das ausgeben lasse zeigt er mir einen hohen Wert wie folgt an: ...09,55

Jetzt die Frage:

Wie kann ich mir den ganzen Wert anzeigen lassen und nicht abgebrochen?

Gruß
getroffen

Content-Key: 250987

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

Ausgedruckt am: 29.03.2024 um 04:03 Uhr

Mitglied: colinardo
colinardo 05.10.2014 aktualisiert um 11:57:09 Uhr
Goto Top
Moin,
denke mal du willst die Ausgabe der 5 Prozesse die am meisten die CPU beanspruchen in Prozent erhalten ?!, get-process liefert aber keine Prozentwerte sondern die kumulierte Prozessorzeit die ein Prozess in Sekunden konsumiert hat. Die Prozentwerte lassen sich via WMI auslesen:
here we go:
gwmi Win32_PerfFormattedData_PerfProc_Process  | ?{$_.Name -notmatch '^_Total$|^Idle$'} | sort PercentProcessortime -Desc | select Name,PercentProcessortime -First 5

Möchtest du hingegen einen Wert im ganzen anzeigen lassen, kannst du das auch mit format-table -Autosize -Wrap erreichen. Wenn für eine Ausgabe als Tabelle der Platz für eine Spalte nicht ausreicht zeigt die Powershell nur in der Anzeige die Punkte an, die Objekte haben aber trotzdem die vollen Werte!

Grüße Uwe
Mitglied: geTr0ffEn
geTr0ffEn 05.10.2014 um 11:57:01 Uhr
Goto Top
Hi Uwe,

danke erst mal, werde deine Info wohl später noch nutzen ;)

Nein, es geht erst mal nur darum, das .. wegzubekommen und den Inhalt tatsächlich zu sehen.
Mitglied: colinardo
colinardo 05.10.2014 aktualisiert um 12:00:49 Uhr
Goto Top
format-table -Autosize -Wrap
via Pipe anhängen, oder weniger Spalten selecten face-smile
Mitglied: geTr0ffEn
geTr0ffEn 05.10.2014 um 12:47:37 Uhr
Goto Top
Zitat von @colinardo:

format-table -Autosize -Wrap
via Pipe anhängen, oder weniger Spalten selecten face-smile


funktioniert zwar, aber keinen Schimmer wie ich da alleine hingekommen wäre

was meinst du mit weniger Spalten?
Mitglied: colinardo
colinardo 05.10.2014 aktualisiert um 13:10:53 Uhr
Goto Top
Zitat von @geTr0ffEn:
funktioniert zwar, aber keinen Schimmer wie ich da alleine hingekommen wäre
Was willst du mir damit sagen ? Doku lesen face-wink und mal alle verfügbaren CMDLets und deren Optionen ansehen, dann weis man wenn man bestimmt Dinge braucht, schon Bescheid welches CMDLet in Frage kommt. Sprachen lernen bedeutet auch Vokabeln lernen face-smile
was meinst du mit weniger Spalten?
mit select nur die benötigten Eigenschaften auswählen z.B. select Name,CPU
Die Shell hat ja nur begrenzt Platz zur Darstellung von allen Eigenschaften als Tabelle,deswegen zeigt die Shell dann anstatt allen Werten die Platzhalter "..." in der Spalte an.
Für die explizite Ausgabe in Dateien oder der Shell nutzt man daher Format-Table oder Format-List, da man damit mehr Formatierungsoptionen hat. Select wird eigentlich nur zur Auswahl von Objekteigenschaften gedacht und nicht für die formatierte Ausgabe.

Grüße Uwe
Mitglied: geTr0ffEn
geTr0ffEn 05.10.2014 aktualisiert um 13:27:03 Uhr
Goto Top
Bin doch am lernen ;)

wie soll ich denn dadrauf kommen (durch Vokabeln lernen??), wo ich folgendes finde:

nur 2 Stellen hinter dem Komma anzeigen ??

P.S. bin ab heute Level 2 hier :D:D, seh ich grad...
Mitglied: colinardo
colinardo 05.10.2014 aktualisiert um 14:27:27 Uhr
Goto Top
Zitat von @geTr0ffEn:
Bin doch am lernen ;)
Gut.
wie soll ich denn dadrauf kommen (durch Vokabeln lernen??), wo ich folgendes finde:
nur 2 Stellen hinter dem Komma anzeigen ??
Auch mal in Englisch suchen (truncated column) , oder wie gesagt mal durch die CMDLets und deren Parameter stöbern
http://technet.microsoft.com/en-us/library/hh849892.aspx
Mit Powershell muss man am Anfang viel spielen und ausprobieren
P.S. bin ab heute Level 2 hier :D:D, seh ich grad...
face-surprise ich schick dir ne Torte
Mitglied: geTr0ffEn
geTr0ffEn 05.10.2014 aktualisiert um 15:26:10 Uhr
Goto Top
huhu,

ich hab ja beispielsweise bei den Prozessen die Überschriften, ID, Name, CPU etc, Wie kann ich denn die Spalten sortieren? Nur mit Select? Mir fällt auf das in den Felder der Überschriften, manche rechtsbündig im Feld angeordnet sind, andere linksbündig. Welcher Befehl steuert das?

Dann noch, bei Eingabe von get-process | sort ID, Name ; was macht der denn hier? Beachtet er nur das erste Argument, in dem Fall ID? Da Prozessnamen nach Ausführung unsortiert bleibt.

Gruß
Mitglied: colinardo
colinardo 05.10.2014 aktualisiert um 15:57:33 Uhr
Goto Top
Zitat von @geTr0ffEn:
huhu,
Kuckuck
ich hab ja beispielsweise bei den Prozessen die Überschriften, ID, Name, CPU etc, Wie kann ich denn die Spalten sortieren?
hast du doch oben schon gemacht sort ist der Alias für sort-object der einen Parameter namens Property hat:
-Property<Object>
Specifies the properties to use when sorting. Objects are sorted based on the values of these properties. Enter the names of the properties. Wildcards are permitted.
If you specify multiple properties, the objects are first sorted by the first property. If more than one object has the same value for the first property, those objects are sorted by the second property. This process continues until there are no more specified properties or no groups of objects.
If you do not specify properties, the cmdlet sorts based on default properties for the object type.
Du siehst wieder hilft die Doku ....

Mir fällt auf das in den Felder der Überschriften, manche rechtsbündig im Feld angeordnet sind,
andere linksbündig. Welcher Befehl steuert das?
das ist je nach Datentyp unterschiedlich, Steuern kannst du das ebenfalls mit Format-Table und einer Hashtable, hier hilft auch wieder die Doku:
Property<Object>
Specifies the object properties that appear in the display and the order in which they appear. Type one or more property names (separated by commas), or use a hash table to display a calculated property. Wildcards are permitted.
If you omit this parameter, the properties that appear in the display depend on the object being displayed. The parameter name ("Property") is optional. You cannot use the Property and View parameters in the same command.
The value of the Property parameter can be a new calculated property. To create a calculated, property, use a hash table. Valid keys are:
-- Name (or Label) <string>
-- Expression <string> or <script block>
-- FormatString <string>
-- Width <int32>
-- Alignment (value can be "Left", "Center", or "Right")
Dann noch, bei Eingabe von get-process | sort ID, Name ; was macht der denn hier? Beachtet er nur das erste Argument, in dem Fall
ID? Da Prozessnamen nach Ausführung unsortiert bleibt.
siehe oben, die zweite Eigenschaft kommt nur zum Einsatz wenn es zwei gleiche Einträge in der ersten Eigenschaft gibt.
Wie sollte das hier sonst auch gehen ? Die Id ist eindeutig, wenn du dann nach Name sortierst wäre automatisch ID wieder durcheinander.

Wird wohl mal wieder ein Grundkurs Powershell hier ....

Wenns das dann war bitte auf gelöst setzen. Danke.
Mitglied: geTr0ffEn
geTr0ffEn 05.10.2014 um 15:59:44 Uhr
Goto Top
ok,

hast du denn vielleicht noch n paar Tips zum Erlernen?

wie in einem anderem Bericht:
Mitglied: geTr0ffEn
geTr0ffEn 05.10.2014 um 18:49:08 Uhr
Goto Top
das erste ist sehr gut ;) danke

kannst du mir noch einen Link geben, wo man ein Übersicht der ganzen eckigen, geschweiften und Zeichen der Parameter geben. Diese findet man ja überwiegend in den engl. Dokus, aber auch in deutsch und bei MS.

Gru
Mitglied: colinardo
colinardo 05.10.2014 aktualisiert um 19:22:26 Uhr
Goto Top
Google mal "Powershell Cheatsheet"
http://www.gegeek.com/documents/cheat_sheets/powershell-basic-cheat-she ...
und dat klebst du dir an den Bildschirm bis du's im Schlaf auswendig runterleiern kannst face-smile ....
Mitglied: geTr0ffEn
geTr0ffEn 06.10.2014 um 10:51:57 Uhr
Goto Top
Hab mal folgendes versucht, bekomme jedoch sofort Fehlermeldungen:

strComputer = "PC01"

Set wbemServices = GetObject("winmgmts:\\" & strComputer)
Set wbemObjectSet = wbemServices.InstancesOf("Win32_LogicalMemoryConfiguration")

For Each wbemObject In wbemObjectSet
WScript.Echo "Total Physical Memory (kb): " & wbemObject.TotalPhysicalMemory
Next
Mitglied: colinardo
colinardo 06.10.2014 aktualisiert um 11:02:03 Uhr
Goto Top
Zitat von @geTr0ffEn:
Hab mal folgendes versucht, bekomme jedoch sofort Fehlermeldungen:
Powershell ist ja auch kein VBScript face-big-smile, oh man... du hast anscheinend noch gar nichts gelernt.

das gewünschte lässt sich so für Powershell abkürzen face-wink:
$total = (gwmi Win32_Computersystem -ComputerName 'PC01').TotalPhysicalMemory  
write-host "Total Physical Memory (kb): $total"  
bitte in Zukunft für was neues, neuen Thread aufmachen, oder erst mal weiter lernen. Merci. Das ist ein "Administrator"-Forum !
Mitglied: geTr0ffEn
geTr0ffEn 06.10.2014 aktualisiert um 12:04:01 Uhr
Goto Top
Ich befasse mich doch erst seit letzter Woche mit PS.

Wie hätte ich es denn erkennen können das es explizit VBS ist? Du sagst ich habe noch nichts gelernt.
Wie hätte ich es in einer Woche besser machen können, es erkennen können. Bin doch gerade mit deiner Empfehlung: http://www.powershellpraxis.de/index.php/mysite dran. Es kommt das Thema WMI auf, folge einem Link dabei zur MS Seite. Diesem folge ich, bekomme ein Problem mit dem Script, frage hier nach und bekomme zuerst gesagt: "du hast ja immer noch nichts gelernt..."

Es wäre sinnvoller, mir nur kurz zu sagen, wie ich in so 'nem Script, für die Zukunft, so was erkennen kann. Vor allem viel kürzer.
Es bringt mir nichts, immer zu hören, das ich nichts gelernt habe. Du erkennst ja anscheinend was mein Problem ist, dann sprich es doch kurz an und sags mir.


Gruß
getroffen
Mitglied: colinardo
colinardo 06.10.2014 um 12:07:47 Uhr
Goto Top
Zitat von @geTr0ffEn:

Ich befasse mich doch erst seit letzter Woche mit PS.
in der Zeit lernt man wesentlich mehr...
Wie hätte ich es denn erkennen können das es explizit VBS ist? Du sagst ich habe noch nichts gelernt.
Wie hätte ich es in einer Woche besser machen können?
Wenn du den ersten Link von gestern mal durchgelesen hättest wüsstest du da Variablen im Powershell mit einem Dollarzeichen beginnen, dass lernt man in den ersten paar Minuten wenn man sich mit Powershell beschäftigt, das wird mir hier jeder bestätigen...
Es wäre sinnvoller, mir nur kurz zu sagen, wie ich in so 'nem Script, für die Zukunft, so was erkennen kann. Vor
allem viel kürzer.
Erkennst du du an den Dollarzeichen für die Variablen und an dem CMDLet-Stil
Es bringt mir nichts, immer zu hören, das ich nichts gelernt habe. Du erkennst ja anscheinend was mein Problem ist, dann sprich es doch kurz an und sags mir.
Habe ich doch, aber es bringt dem Forum hier auch nichts wenn du andauernd absolute Grundlagen erfragst. Das ist wie gesagt ein Administrator-Forum und kein "bring mir Powershell bei"-Forum. Arbeite die Links von oben erst mal alle durch und dann kannst du wenn du was nicht verstehst Fragen stellen, etwas Mühe sollte man eigentlich schon erwarten können.
Es ist immer wieder das selbe Spiel.
Mitglied: geTr0ffEn
geTr0ffEn 06.10.2014 um 12:18:08 Uhr
Goto Top
ich mache einfach weiter....irgendwann lachen wir drüber, wie immer.... :D