PowerShell Win32_Volume zeigt mir nicht alle NTFS-Mount Points an

Hyourinmaru

Lt. Commander
Registriert
Feb. 2010
Beiträge
1.211
N'Abend zusammen,

ich hatte mir vor ein paar Jahren in der CMD mal ein Skript zusammen gebastelt, mit dem ich mir einfach alle derzeit verbundenen Datenträger/Volumes anzeigen lassen kann und diese dann über die Volume GUID mit MOUNTVOL.EXE einfach in den Verzeichnisbaum von C:\ bereitstellen lassen kann. Funktioniert soweit auch ganz ordentlich.
Nun will ich das Ganze nach Powershell umziehen und etwas umbauen und habe mal ein bissle mit Get-WmiObject Win32_Volume herumexperimentiert. Das habe ich auch ganz passabel hinbekommen. Allerdings habe ich hier das Problem, dass mir nicht alle NTFS-Mount Points angezeigt werden, sondern immer nur einer von jedem Volume.

Get-MountPoints.jpg

Bspw. ist das DVD-Laufwerk zusätzlich zu A:\ noch im Verzeichnisbaum unter "C:\Volumes\DVD-Laufwerk" eingebunden und meine User-Partition zusätzlich zu U:\ noch unter "C:\Volumes\Home", diese Pfade werden hier aber nicht angezeigt.
Verfügt ein Volume nur über einen Mount Point, dann wird dieser hier auch angezeigt.

Weiß jemand von euch, wie ich Powershell bzw. die Class Win32_Volume dazu bewegen kann, alle Mount Points anzuzeigen?

2. Frage: Wie kann ich erreichen, dass ich auch Mount Points von anderen PCs in der Arbeitsgruppe anzeigen lassen kann, evlt. über eine Benutzer-geforderte Eingabe des Computernamens?

MfG Hyourinmaru
 

Anhänge

Zuletzt bearbeitet:
Ich habs gerade selbst mal ausprobiert. Win32_Volume Spuckt wohl immer nur je Volume nur einen Mountpoint aus.
Der Befehl mountvol ohne weiteren parameter spuckt sie alle aus, die Ausgabe ist aber eher unpraktisch um diese in einem Script weiter zu verarbeiten.
Habe noch einige alternativen ergoogelt, aber die haben alle das gleiche Problem, dass nur ein Mountpoint oder generell nur die Laufwerksbuchstaben ausgegeben werden können.

Wie man das löst würde mich dann auch mal interessieren, ich denke das könnte ich demnächst auch gebrauchen.
 
fsutil ist immer ein guter Anfang. Wobei ich grad nicht gucken kann, mit welchen Unterbefehlen man dort zum Ziel kommt.

Mountpoints sind Sache des Dateisystems (cf Reparse Points). Es wird einfach gesagt, wer auf dieses Dateisystemobjekt zugreift, wird auf Volume XYZ umgeleitet. Entsprechend sind dateisystembezogene Provider ein guter Ansatz.
 
  • Gefällt mir
Reaktionen: rocketworm
Übrigens, mit den CIM cmdlets kommt man auch auf andere PCs (Möglichkeiten der Anmeldung vorausgesetzt, zB in Domains). Ansonsten Invoke-Command. Damit geht praktisch alles, solange man PS Remoting zum Laufen bekommt außerhalb von Domains.
 
Hallo zusammen, tut mir leid, dass ich mich jetzt erst wieder melde. Hatte die letzten Tage viel um die Ohren.

Das mit fsutil volume list hört sich gut an. Hab schon gehört, dass das file system Utility sehr mächig sein soll. Allerdings muss ich sagen, dass die Ausgabe des Befehls wenig anschaulich ist (ist dieselbe Art von Ausgabe, die ich auch mit mountvol.exe erhalte).
Jetzt wäre meine Frage, ob man die Ausgabe von fsutil weiter ver-/bearbeiten kann, damit ich diese in eine schöne und saubere Tabellen-Ausgabe wie im Bild im Start-Post ausgeben lassen kann? Hintergrund ist, dass ich das ganze dann auch irgendwann mit der Option Out-Gridview in einem separaten Tabellenfenster anzeigen lassen möchte.

MfG Hyourinmaru
 
Hat niemand ne Idee, wie und ob man den fsutil command überhaupt sinnvoll weiterverarbeiten bzw. weitergeben kann?

MfG Hyourinmaru
 
Wrapperfunktion drumrum. Wird ein bißchen Parsen notwendig, aber von der Sache her ist die Ausgabe einfach und klar:
1— 1. Zeile weg
2— Nächste Zeile lesen
3++\\?\Volume vorne?
• Ja: neues Ausgabeobjekt anlegen und merken, wenn dieses nicht $null ist, ausgeben. Kann auch per Flag implementiert werde, was lieber ist.
• Nein: Die Zeile dem gemerkten Ausgabeobjekt in eine definierte List-Eigenschaft hinzufügen
4— Keine weiteren Zeilen? Abbrechen. Ansonsten zurück zu (2).
 
Zurück
Oben