Get-VMSwitch Ausgabe in PowerShell-Skript
Moin,
ich möchte mit dem Befehl "Get-VMSwitch" die vorhandenen virtuellen Switche auf einem Hyper-V Host innerhalb eines Skripts anzeigen. Leider funktioniert dies nicht,
ic h kann zwar sehen, dass der Befehl ausgeführt wird aber die Ausgabe erscheint nicht im PowerShell-Fenster. Führe ich das direkt in der PowerShell aus, erhalte ich eine wie gewünscht die Ausgabe. Ich hatte im weiteren versucht das Ergebnis in einer variable zwischenzuspeichern und dann auszugeben. Leider ist die Formatierung nicht sinnvoll.
Welche Möglichkeiten habe ich, die Ausgabe des Befehls im Skript vernünftig darzustellen?
Gruß
ich möchte mit dem Befehl "Get-VMSwitch" die vorhandenen virtuellen Switche auf einem Hyper-V Host innerhalb eines Skripts anzeigen. Leider funktioniert dies nicht,
ic h kann zwar sehen, dass der Befehl ausgeführt wird aber die Ausgabe erscheint nicht im PowerShell-Fenster. Führe ich das direkt in der PowerShell aus, erhalte ich eine wie gewünscht die Ausgabe. Ich hatte im weiteren versucht das Ergebnis in einer variable zwischenzuspeichern und dann auszugeben. Leider ist die Formatierung nicht sinnvoll.
$SwitchName = Get-VMSwitch -Computername $env:COMPUTERNAME
Write-Host $SwitchName
Welche Möglichkeiten habe ich, die Ausgabe des Befehls im Skript vernünftig darzustellen?
Gruß
Please also mark the comments that contributed to the solution of the article
Content-ID: 1293200496
Url: https://administrator.de/contentid/1293200496
Printed on: November 13, 2024 at 21:11 o'clock
7 Comments
Latest comment
Moin,
ich habe gerade kein Hyper-V-Host zur Verfügung und deshalb auch kein get-VMSwitch. Aber wenn Dir die normale Ausgabe des Befehls reicht, dann versuche es mal mit tee-object. Hier ein Beispiel mit get-childitem. Aber das geht mit jedem anderen Befehl auch:
Und so sieht dann die Ausgabe aus:
Wichtig ist, wenn Du die Ausgabe in einer Variablen speichern willst, dass Du den Namen ohne $ davor hinter -variable schreibst. Im weiteren Skript dann wieder mit $.
hth
Erik
ich habe gerade kein Hyper-V-Host zur Verfügung und deshalb auch kein get-VMSwitch. Aber wenn Dir die normale Ausgabe des Befehls reicht, dann versuche es mal mit tee-object. Hier ein Beispiel mit get-childitem. Aber das geht mit jedem anderen Befehl auch:
Get-ChildItem | Tee-Object -variable variable_without_dollar
foreach($file in $variable_without_dollar) {
write-output $file.fullname
}
Und so sieht dann die Ausgabe aus:
PS C:\Users\erik\Documents\ps-test> .\tee.ps1
Verzeichnis: C:\Users\erik\Documents\ps-test
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 01.06.2020 20:31 April
d----- 01.06.2020 20:31 xml
-a---- 23.04.2020 18:13 455 move.ps1
-a---- 22.09.2021 20:30 149 tee.ps1
C:\Users\erik\Documents\ps-test\April
C:\Users\erik\Documents\ps-test\xml
C:\Users\erik\Documents\ps-test\move.ps1
C:\Users\erik\Documents\ps-test\tee.ps1
Wichtig ist, wenn Du die Ausgabe in einer Variablen speichern willst, dass Du den Namen ohne $ davor hinter -variable schreibst. Im weiteren Skript dann wieder mit $.
hth
Erik
Abend,
ich hab das "Skript" mal auf einem unserer Hyper-Vs ausprobiert und da kommt doch genau das zurück, was man braucht?
Die Auflistung ist sogar automatisch in einem Table geordnet, daher verstehe ich deine Frage ehrlich gesagt nicht.
Du sagst, wenn du es in PowerShell ausführst, dann bekommst du das was du wünschst ausgegeben ... Dann stellt sich mir die Frage: wo führst du es sonst aus, wenn nicht in der Powershell?
Hilfreich wäre vielleicht, wenn du mal beispielhaft deinen Output postet und anhand dessen erklärst was dich genau stört.
ich hab das "Skript" mal auf einem unserer Hyper-Vs ausprobiert und da kommt doch genau das zurück, was man braucht?
Die Auflistung ist sogar automatisch in einem Table geordnet, daher verstehe ich deine Frage ehrlich gesagt nicht.
Du sagst, wenn du es in PowerShell ausführst, dann bekommst du das was du wünschst ausgegeben ... Dann stellt sich mir die Frage: wo führst du es sonst aus, wenn nicht in der Powershell?
Hilfreich wäre vielleicht, wenn du mal beispielhaft deinen Output postet und anhand dessen erklärst was dich genau stört.
Du solltest ja auch angeben wie du die Ausgabe formatiert haben wilst und das machst du ja nicht, du gibst quasi nur das Objekt aus ohne Formatierungsangaben, da entscheidet die Powershell dann selbst ob sie nach aktuellem Kontext was anzeigt oder nicht, also gib explizit an wie du es ausgeben willst
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...
Get-VMSwitch | Format-Table Name,SwitchType
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...
Zitat von @grmg2010:
Allerdings schneidet er bei mir den Namen ab, solange ich nur zwei Spalten wähle. Kann man das noch etwas anders formatieren oder ist das problematisch? Sonst lasse ich mir auch die Interfacebeschreibung anzeigen, das ist auch in Ordnung. Auf jeden Fall besser, als wenn die Switch-Namen nicht erkennbar sind.
Vielen Dank.
Allerdings schneidet er bei mir den Namen ab, solange ich nur zwei Spalten wähle. Kann man das noch etwas anders formatieren oder ist das problematisch? Sonst lasse ich mir auch die Interfacebeschreibung anzeigen, das ist auch in Ordnung. Auf jeden Fall besser, als wenn die Switch-Namen nicht erkennbar sind.
Vielen Dank.
Das ist auch kein Problem, bräuchtest du dir nur mal die Parameter von format-table anschauen
Get-VMSwitch | format-table Name,SwitchType -AutoSize -Wrap