
136430
27.06.2018
Powershell Ausgabeproblem
Ich habe zwei Probleme bei der Ausgabe in einem Ausgabefenster:
Ich gebe mit einem Befehl eine Pingabfrage in einem Ausgabefenster aus. Das funktioniert und zwar mit dem Befehl "Out-String"
Meine Funktion lautet:
In meinem Ausgabfenster kommt dann auch fleißig
Ich bräuchte nur die Spalten Source, Destination, IPV4Address und Time(ms), komme aber nicht auf den Trichter wie ich das mache? Könnt ihr mir weiterhelfen?
Mein zweites Problem ist eine Festplattenabfrage, sie funktioniert in Powershell aber nicht in meiner Gui, in meinem Ausgabefenster bleibt es zappenduster oder es kommen lauter hyroglyphen
habt ihr einen Rat?
Ich gebe mit einem Befehl eine Pingabfrage in einem Ausgabefenster aus. Das funktioniert und zwar mit dem Befehl "Out-String"
Meine Funktion lautet:
$Pingabfrage={
$hosts= $DropDownBox.SelectedItem.ToString()
$PingAusgabe = Test-Connection -ComputerName $hosts -Count 3 -ErrorAction 0 | out-string
$AusgabeFeld.text= $PingAusgabe
}
In meinem Ausgabfenster kommt dann auch fleißig
Source Destination IPV4Address IPV6Address Bytes Time(ms)
------ ----------- ----------- ----------- ----- --------
Host Host 192.168.XX.XX 32 0
Host Host 192.168.XX.XX 32 0
Host Host 192.168.XX.XX 32 0
Ich bräuchte nur die Spalten Source, Destination, IPV4Address und Time(ms), komme aber nicht auf den Trichter wie ich das mache? Könnt ihr mir weiterhelfen?
Mein zweites Problem ist eine Festplattenabfrage, sie funktioniert in Powershell aber nicht in meiner Gui, in meinem Ausgabefenster bleibt es zappenduster oder es kommen lauter hyroglyphen
$HDDabfrage={
$hosts= $DropDownBox.SelectedItem.ToString()
$HDDausgabe = Invoke-Command -ComputerName $hosts -Credential XXXXX -ScriptBlock { Get-PSDrive -used }
$AusgabeFeld.text= $HDDausgabe
}
habt ihr einen Rat?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 378445
Url: https://administrator.de/forum/powershell-ausgabeproblem-378445.html
Ausgedruckt am: 10.04.2025 um 20:04 Uhr
18 Kommentare
Neuester Kommentar
> Ich bräuchte nur die Spalten Source, Destination, IPV4Address und Time(ms), komme aber nicht auf den Trichter wie ich das mache? Könnt ihr mir weiterhelfen?
Powershell hantiert mit Objekten nicht nur mit Strings, also nutze sie auch ... Welche Eigenschaften mit welchen Namen es gibt zeigt dir ein <Befehl>| fl * in der Konsole an. Bei Test-Connection ist es so das die tatsächlichen Eigenschaften nicht alle gleich der Ausgabe sind:$PingAusgabe = Test-Connection -ComputerName $hosts -Count 3 -ErrorAction 0 | ft PsComputerName,Address,IPv4Address,ResponseTime -AutoSize -Wrap | out-string
Mein zweites Problem ist eine Festplattenabfrage, sie funktioniert in Powershell aber nicht in meiner Gui, in meinem Ausgabefenster bleibt es zappenduster oder es kommen lauter hyroglyphen
Get-PSDrive -used
Weil du die Rückgabe nicht als String formatierst, sondern als Objekt in das Textfeld übergibst..., außerdem gibt es den Parameter -used nicht.Get-PSDrive -used
$HDDausgabe = Invoke-Command -ComputerName $hosts -Credential XXXXX -ScriptBlock { Get-PSDrive | ft Name,Used,Free -AutoSize -Wrap | out-string }
Moin,
zum ersten Problem:
Frag mich jetzt nicht, wie Du die Überschriften änderst. ;)
Zum zweiten Problem: Den Parameter -used gibt es bei get-psdrive nicht.
hth
Erik
zum ersten Problem:
Test-Connection -ComputerName fileserver -Count 3 -ErrorAction 0 | select-object PSComputerName,Address,IPV4Address,ResponseTime
Frag mich jetzt nicht, wie Du die Überschriften änderst. ;)
Zum zweiten Problem: Den Parameter -used gibt es bei get-psdrive nicht.
PS XXX> get-psdrive -used
Get-PSDrive : Es wurde kein Parameter gefunden, der dem Parameternamen "used" entspricht.
In Zeile:1 Zeichen:13
+ get-psdrive -used
...
hth
Erik
Frag mich jetzt nicht, wie Du die Überschriften änderst. ;)
Mit einer Calculated Property z.B. ...Test-Connection -ComputerName $hosts -Count 3 -ErrorAction 0 | select @{n='Source';e={$_.PSComputerName}},@{n='Destination';e={$_.Address}},IPV4Address,ResponseTime
Zitat von @erikro:
Moin,
zum ersten Problem:
Frag mich jetzt nicht, wie Du die Überschriften änderst. ;)
Zum zweiten Problem: Den Parameter -used gibt es bei get-psdrive nicht.
Moin,
zum ersten Problem:
Test-Connection -ComputerName fileserver -Count 3 -ErrorAction 0 | select-object PSComputerName,Address,IPV4Address,ResponseTime
Frag mich jetzt nicht, wie Du die Überschriften änderst. ;)
Zum zweiten Problem: Den Parameter -used gibt es bei get-psdrive nicht.
PS XXX> get-psdrive -used
> Get-PSDrive : Es wurde kein Parameter gefunden, der dem Parameternamen "used" entspricht.
> In Zeile:1 Zeichen:13
> + get-psdrive -used
> ...
Du slltest den Code auch richtig schreiben:
get-psdrive | ft used
hth
Erik
Gruss penny.Erik
Zitat von @136430:
Danke für die Hilfe mit den Objekten!, allerdings sind die Spalten sehr eng bei einander, wie kann ich die Abstände vergrößern?
-AutoSize weglassen. Aber noch besser wäre es wenn du gleich ein DataGridView für die Anzeige benutzt oder an Out-GridView sendest!Danke für die Hilfe mit den Objekten!, allerdings sind die Spalten sehr eng bei einander, wie kann ich die Abstände vergrößern?
Bei der HDD Ausgabe werden mir die Größen in bytes angegeben ich habe versucht es in GB umzuwandeln mit folgender Zeile:
Allerdings wird mir dann im Ausgabefenster der GUI folgende Zeilen angezeigt:
Kein Problem-ScriptBlock { Get-PSDrive | ft Name,Name="Free";Expression={[math]::round($_.used/1gb,2)} -AutoSize -Wrap | out-string }
Allerdings wird mir dann im Ausgabefenster der GUI folgende Zeilen angezeigt:
Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData
get-PSDrive | ft Name,@{n='Size';e={"{0:F2}" -f ($_.Used/1GB)}} | out-string
Allerdings wird mir dann im Ausgabefenster der GUI folgende Zeilen angezeigt:
Weil deine Variable noch von dem Typ ist, von vorherigen Versuchen, schließe deine Umgebung starte sie neu und alles wird gut Du solltest dir besser zuerst mal die Formatting und Object Basics beibringen, nur mal so als Vorschlag.
Zitat von @136430:
lasse ich Autosize und/oder grid weg bleibt es so wie es vorher war, mit DataGridView und Out-GridView bin ich überfragt
Och mensch Doku lesen:lasse ich Autosize und/oder grid weg bleibt es so wie es vorher war, mit DataGridView und Out-GridView bin ich überfragt
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...
Kein Problem
> get-PSDrive | ft Name,@{n='Size';e={"{0:F2}" -f ($_.Used/1GB)}} | out-string
>
> get-PSDrive | ft Name,@{n='Size';e={"{0:F2}" -f ($_.Used/1GB)}} | out-string
Leider sind die beiden Spalten total verrutscht, zeile für zeile. Es liegt wohl am ausgabefenster, in der powershell cmd ist es schön untereinander, dann fehlt mir noch die Spalte des freien Speichers.
Du solltest dir besser zuerst mal die Formatting und Object Basics beibringen, nur mal so als Vorschlag.
Beispiele wie das mit DataGridview geht habe ich hier schon zu Hauf gepostet, einfach mal in meinen Threads nachblätten, das wiederhole ich jetzt nicht nochmal.
Powershell: DataGrid Formatieren, Breite automatisch anpassen funktioniert nicht
usw.
Also hier ausnahmsweise nochmal schnell als simples Beispiel wie du Daten in einem DataGridView-Control darstellst, allemal besser als dieser Textbox-Strunz.
Das DGV Control lässt sich in vielfältiger Weise an die Bedürfnisse anpassen.
Damit solltest du nun in der Lage sein das gleiche zu machen! Die interessanten Zeilen sind ab Zeile 16 zu sehen.
Das DGV Control lässt sich in vielfältiger Weise an die Bedürfnisse anpassen.
Damit solltest du nun in der Lage sein das gleiche zu machen! Die interessanten Zeilen sind ab Zeile 16 zu sehen.
function GenerateForm {
#region Import the Assemblies
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null
#endregion
#region Generated Form Objects
$form1 = New-Object System.Windows.Forms.Form
$dgv = New-Object System.Windows.Forms.DataGridView
$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState
#endregion Generated Form Objects
$handler_form1_Load=
{
$data = Get-PSDrive | select Name,@{n='Size(GB)';e={"{0:F2}" -f ($_.Used / 1GB)}}
$arrList = New-Object System.Collections.ArrayList
$arrList.AddRange(@($data))
$dgv.DataSource = $arrList
}
$OnLoadForm_StateCorrection=
{#Correct the initial state of the form to prevent the .Net maximized form issue
$form1.WindowState = $InitialFormWindowState
}
#----------------------------------------------
#region Generated Form Code
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 206
$System_Drawing_Size.Width = 294
$form1.ClientSize = $System_Drawing_Size
$form1.DataBindings.DefaultDataSourceUpdateMode = 0
$form1.Name = "form1"
$form1.Text = "DataGridView"
$form1.add_Load($handler_form1_Load)
$dgv.Anchor = 15
$dgv.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 12
$System_Drawing_Point.Y = 12
$dgv.Location = $System_Drawing_Point
$dgv.Name = "dgv"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 182
$System_Drawing_Size.Width = 270
$dgv.Size = $System_Drawing_Size
$dgv.TabIndex = 0
$form1.Controls.Add($dgv)
#endregion Generated Form Code
#Save the initial state of the form
$InitialFormWindowState = $form1.WindowState
#Init the OnLoad event to correct the initial state of the form
$form1.add_Load($OnLoadForm_StateCorrection)
#Show the Form
$form1.ShowDialog()| Out-Null
} #End Function
#Call the Function
GenerateForm
Zitat von @136430:
Da bin ich drauf und drann und danke nochmals, dass du mir immer mit Rat und Tat zur Seite stehst, ich suche noch eine ordentliche Literatur, damit ich es besser lerne
Schau mal im Internet nach Tobias Weltner - Mastering PowerShell. Das findest Du als PDF und ist kostenfrei.@colinardo
Nimm bitte etwas mehr Rücksicht mit uns PowerShell Anfängern. Leider erschließt sich PowerShell nicht jedem und auch nicht sofort. Vor allen Dingen durch die für mich unübersichtliche Anzahl der Objekten. Und es erleichtert nicht grade das lernen, wenn es um den Einsatz der Parameter geht. Mal müssen diese benannt werden, mal muss die Reihenfolge eingehalten werden, mal ist es egal.
Gruss Penny.
Mal müssen diese benannt werden, mal muss die Reihenfolge eingehalten werden, mal ist es egal.
Das ergibt sich aus der Doku für das CMDLet und dessen Parameter, wenn für einen Parameter die Eigenschaft "Position" definiert ist kann der Parametername weggelassen werden , dann muss aber dessen Reihefolge stimmen damit die Shell sie richtig zuweisen kann, also eigentlich ganz logisch. Die Powershell basiert halt auf dem NET Framework da erklärt sich von selbst das der Funktionsumfang sehr viel größer ist. Aber wer lesen kann ist wie immer im Vorteil.Beispiel hat er oben bekommen, wie er das vernünftig löst.Also alles paletti.
Moin,
Das steht aber beim TO nicht. Da steht das so:

Liebe Grüße
Erik
Zitat von @Penny.Cilin:
Du slltest den Code auch richtig schreiben:
funktioniert hier wie gewünscht.
Du slltest den Code auch richtig schreiben:
get-psdrive | ft used
Das steht aber beim TO nicht. Da steht das so:
$HDDausgabe = Invoke-Command -ComputerName $hosts -Credential XXXXX -ScriptBlock { Get-PSDrive -used }
Liebe Grüße
Erik
Zitat von @colinardo:
Das wollte ich dem TO "noch" nicht zumuten, da bekommt er ja vollkommen die Klatsche
.
Das wollte ich dem TO "noch" nicht zumuten, da bekommt er ja vollkommen die Klatsche
So war das gemeint, dass er besser nicht fragen soll.
Hallo Schiggi,
ich gehe mal davon aus, daß Du ein aktuelles Windows (10?) verwendest. Solltest Du eine ältere Windows Version nutzen, kannst mit dem Update auf WMF v5.1 (Windows Management Framework) PowerShell aktualisieren. Dann wird auch die ISE aktualisiert.
Diese ist eigentlich ganz gut.
Alternative kannst Du Dir
- PowerShellPlus Professional Edition
- PowerGUI Script Editor
anschauen. Welche noch Freeware sein sollten.
Von Tobias Weltner gibt es auch noch eine GUI.
Wobei ich beide etwas oversized finde. Bleibe erstmal bei der ISE. Nur so meinen Meinung.
Gruss Penny.
ich gehe mal davon aus, daß Du ein aktuelles Windows (10?) verwendest. Solltest Du eine ältere Windows Version nutzen, kannst mit dem Update auf WMF v5.1 (Windows Management Framework) PowerShell aktualisieren. Dann wird auch die ISE aktualisiert.
Diese ist eigentlich ganz gut.
Alternative kannst Du Dir
- PowerShellPlus Professional Edition
- PowerGUI Script Editor
anschauen. Welche noch Freeware sein sollten.
Von Tobias Weltner gibt es auch noch eine GUI.
Wobei ich beide etwas oversized finde. Bleibe erstmal bei der ISE. Nur so meinen Meinung.
Gruss Penny.
Ich habe hier auch noch die Primal Forms Community Edition liegen die Quasi ein reiner schlanker GUI Editor des großen Bruders ist und dir das Powershell Gerüst für deine GUI liefert was du dann in der ISE weiterverwenden kannst. Die Edition bietet der Hersteller nicht mehr als Download an, war aber damals frei zu haben und ist immer noch nützlich um schnell mal eine GUI zusammen zu klicken. Wenn du Interesse hast, kurze PN und ich lasse dir gerne einen Link zukommen.
Grüße Uwe
Grüße Uwe