Auslesen von Datenträgern

Revan335

Commander
Registriert
Aug. 2009
Beiträge
2.221
Hallo,

wie kann man sich die Datenträger bspw. per Befehl bspw. cmd/PowerShell (den kann man ja dann in ein Script packen) auflisten lassen die in der Datenträgerverwaltung angezeigt werden?
Da dort auch die ohne Buchstabe (C:, ....) erscheinen wäre es wichtig auch diese zu berücksichtigen.

Vielen Dank!

Viele Grüße

Revan335
 
In Cmd: Wmic Diskdrive list full und in der Powershell: gwmi win32_diskdrive | fl * - beide listen alle erkannten Datenträger auf, ohne dass ihnen ein Laufwerksbuchstabe zugeordnet sein muss.
 
  • Gefällt mir
Reaktionen: Hayda Ministral, whats4 und Xero261286
diskpart
weitere Befehle:
list
select
detail

Was die Befehle genau machen, kann man mit z.B. list /? sehen.

aus diskpart aussteigen (beenden): exit
 
Worum genau geht es? Disks sind keine volumes.

wenn ich die Frage richtig interpretier, dann ist Get-Volume in PS der beste Weg zum Ziel. Das kapselt die darunter liegenden wmi/cim queries.
 
PS:
Get-Volume | Sort DriveLetter

[System.IO.DriveInfo]::GetDrives()

Get-WmiObject "Win32_LogicalDisk"

Get-WmiObject "Win32_DiskDrive"

Get-Disk

Get-PhysicalDisk

Nur USB-Sticks (falls angeschlossen):
Get-WmiObject -Query "Select * From Win32_LogicalDisk Where DriveType = '2'"

Nur CD/DVD:
Get-WmiObject -Query "Select * From Win32_LogicalDisk Where DriveType = '5'"

Nur interne Festplatten:
Get-WmiObject -Query "Select * From Win32_LogicalDisk Where DriveType = '3'"

Nur externe Festplatten (falls angeschlossen):
Get-WmiObject -Query "Select * From Win32_LogicalDisk Where DriveType = '4'"
 
  • Gefällt mir
Reaktionen: Hayda Ministral und whats4
Vielen Dank schon mal an alle!

@NotNerdNotDau
Da ist schon was richtiges bei, leider scheint es so das Dinge wie Get-Volume erst ab Win 8+ dabei sind. Bspw. Win 7/Server 2012 kann damit noch nichts anfangen.

Andere Befehle zeigen nur die an die auch einen Buchstaben haben. Bspw. Get-WmiObject "Win32_LogicalDisk"

Beispiele für mögliche oder ähnliche Namen wären:
"OS" (C: ) Eingebaut
"PC-Name 2021-1-1 Disk 1" (Kein Buchstabe vorhanden) USB Platte
"Festplatte 2" (D: ) USB Platte

Gibt es auch was, was auch schon unter Win 7/Server 2012 läuft?

Diskpart scheint sich nicht als Script zu eignen oder ich hab es nicht richtig gemacht.
Wenn man es manuell macht und dann "list volume" aufruft, gibt es auch Laufwerke ohne Buchstaben inkl. Namen aus.
 
Diskpart will über eine TXT Datei gesteuert werden.

TXT Datei mit allen Befehlen als Liste untereinander, z.B.:
Code:
list disk
list volume

dann mit
Code:
diskpart<c:\liste.txt
aufrufen im script.
 
Revan335 schrieb:
Da ist schon was richtiges bei, leider scheint es so das Dinge wie Get-Volume erst ab Win 8+ dabei sind. Bspw. Win 7/Server 2012 kann damit noch nichts anfangen.
Alle aktuell supporteten Windowsversionen kennen get-volume.

Alle anderen kriegen genau das, keinen Support.
 
Revan335 schrieb:
Diskpart scheint sich nicht als Script zu eignen
Doch, das geht.

Das ist jetzt nur ein grobes Beispiel, das müsste man in einem Script noch weiter ausbauen.

Zum Testen einfach die PS-Konsole mit Adminrechten aufrufen:

PowerShell:
Function PrepUSB{
    $USBlist = Get-WMIObject "Win32_LogicalDisk" | Select DeviceID
    ForEach($USB in $USBlist){
        $UFD = $USB.DeviceID
        $prepdisk=@(
            'list disk',
            'list vol'
        )
        $prepdisk | diskpart
    }
}
PrepUSB

Man kann auf diese Weise Datenträger über diskpart auch direkt bearbeiten.
In dem nachfolgenden Beispiel wird ein eingesteckter USB-Stick bearbeitet.
Doch Vorsicht, den Code nicht ausführen, ansonsten wird ein aktivierter Datenträger formatiert und alle Daten sind weg!

PowerShell:
Function PrepUSB{
    $USBlist = Get-WMIObject -Query "SELECT * from Win32_LogicalDisk Where DriveType='2'"
    ForEach($USB in $USBlist){
        $UFD = $USB.DeviceID
        $prepdisk=@(
            "select vol '$UFD'",
            'clean'
            'create partition primary'
            'format fs=FAT32 label=BOOT quick'
            'active'
            'assign'
        )
        $prepdisk | diskpart
    }
}

Übrigens: Man kann sich für ältere Windows-Versionen die entsprechende PowerShell-Version installieren.
Dann sind auch die entsprechenden Cmdlets verfügbar.
 
Damit scheint es auch zu gehen: get-volume | fl FileSystemLabel
Bei 2008 dies: Get-WMIObject -Class Win32_Volume | Select DriveLetter,FreeSpace,Capacity,DeviceID,Label

Vielen Dank für eure Hilfe!
 
  • Gefällt mir
Reaktionen: NotNerdNotDau
Zurück
Oben