Benutzer mit den meisten Antworten
Auslesen des Namens und der Kapazität einer Externen Festplatte

Frage
-
Hey,
ich habe folgendes vor:
Ich möchte mithilfe eines Powershell Scripts auslesen welche USB-Festplatte gerade angeschlossen ist und dies zum Schluss in einer .txt Datei abspeichern.
Wie ich angeschlossene USB Geräte auslesen kann, habe ich schon herausgefunden. Jedoch möchte ich nur ein bestimmtes Gerät auslesen. Wie kann ich dies filtern ? Indem ich es auf bestimmte Hersteller filtere ? In meinem Fall wäre es eine Externe Festplatte von WD.
Die andere Sache ist, dass ich nur zwei Informationen brauche, zum einen den Festplatten Name wie z.B. "Meine Festplatte" und zum anderen die verfügbare Kapazität. Mehr brauche ich nicht :)
Das Ganze soll nun noch kurz in einem Text Dokument abgespeichert werden.
$Computer = '.' gwmi Win32_USBControllerDevice -ComputerName $Computer | foreach-object {[wmi]($_.Dependent)} | Sort Caption,Manufacturer,Description,DeviceID ` | Ft -GroupBy Manufacturer Description,Service,DeviceI
So kriege ich Informationen zu allen USB Geräten, wie kann ich dies simpel filtern ? Zum anderen: Wie kriege ich den Geräte Namen raus ? Also nicht das Festplattenmodell , sondern so wie ich Sie benannt habe.
Müsste die Ausgabe in ein Dokument nicht mit:
Get-Process | Out-File -FilePath C:\Users\Public\Documents
funktionieren ?
Hierbei wird mir nur der Zugriff auf den Pfad verweigert.
Antworten
-
Moin,
das sind drei Fragen ;-) Ich fange mal hinten an.
Out-File braucht einen kompletten Pfad zur Ausgabedatei, nicht zum Ordner, in dem die Datei liegen soll. Du hast praktisch angefordert, dass eine Datei "Documents" unter "Public" erstellt wird, und da gibt es ja schon einen Ordner dieses Namens.
Platten auslesen: Hier hast Du zwei Probleme:
- Der Name ("Label") gehört nicht zum Gerät, sondern zu einer Partition, und deren kann es mehrere geben.
- Gerade bei USB-Festplatten wirst Du selten auf eine andere Herstellerangabe als "(Standardlaufwerke) " stoßen. Ich habe hier eine WD Elements und ein FANTEC-Gehäuse, die WD wird als USBSTOR\DISK&VEN_WD&PROD_ELEMENTS_25A3 angezeigt, die FANTEC hingegen als SCSI\DISK&VEN_ASMEDIA&PROD_ASM1153E. Alles also ziemlich unzuverlässig. Den HErsteller bekommst Du höchstens aus der PNPDeviceID.
Hier als Denkanstoß für weitere Experimente:
Get-WmiObject Win32_USBControllerDevice | foreach { $device = [wmi]($_.Dependent) $disk = Get-WmiObject Win32_DiskDrive -Filter "PNPDeviceID='$($device.DeviceID -replace '\\','\\')'" if ($disk) { "Model: $($disk.Model)" "Size: $([math]::Round(($disk.Size / 1GB),0))GB" } }
und von dort kannst Du mit der Associator-Klasse Win32_DiskDriveToDiskPartition weitere zu den Partitionen gehen und Buchstaben und Labels rauskriegen.
Evgenij Smirnov
I work @ msg services ag, Berlin -> http://www.msg-services.de
I blog (in German) @ http://it-pro-berlin.de
my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
Exchange User Group, Berlin -> https://exusg.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com
In theory, there is no difference between theory and practice. In practice, there is.
- Bearbeitet Evgenij Smirnov Dienstag, 29. Mai 2018 06:22 typo
- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Donnerstag, 31. Mai 2018 22:00
- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 4. Juni 2018 12:56
Alle Antworten
-
Moin,
das sind drei Fragen ;-) Ich fange mal hinten an.
Out-File braucht einen kompletten Pfad zur Ausgabedatei, nicht zum Ordner, in dem die Datei liegen soll. Du hast praktisch angefordert, dass eine Datei "Documents" unter "Public" erstellt wird, und da gibt es ja schon einen Ordner dieses Namens.
Platten auslesen: Hier hast Du zwei Probleme:
- Der Name ("Label") gehört nicht zum Gerät, sondern zu einer Partition, und deren kann es mehrere geben.
- Gerade bei USB-Festplatten wirst Du selten auf eine andere Herstellerangabe als "(Standardlaufwerke) " stoßen. Ich habe hier eine WD Elements und ein FANTEC-Gehäuse, die WD wird als USBSTOR\DISK&VEN_WD&PROD_ELEMENTS_25A3 angezeigt, die FANTEC hingegen als SCSI\DISK&VEN_ASMEDIA&PROD_ASM1153E. Alles also ziemlich unzuverlässig. Den HErsteller bekommst Du höchstens aus der PNPDeviceID.
Hier als Denkanstoß für weitere Experimente:
Get-WmiObject Win32_USBControllerDevice | foreach { $device = [wmi]($_.Dependent) $disk = Get-WmiObject Win32_DiskDrive -Filter "PNPDeviceID='$($device.DeviceID -replace '\\','\\')'" if ($disk) { "Model: $($disk.Model)" "Size: $([math]::Round(($disk.Size / 1GB),0))GB" } }
und von dort kannst Du mit der Associator-Klasse Win32_DiskDriveToDiskPartition weitere zu den Partitionen gehen und Buchstaben und Labels rauskriegen.
Evgenij Smirnov
I work @ msg services ag, Berlin -> http://www.msg-services.de
I blog (in German) @ http://it-pro-berlin.de
my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
Exchange User Group, Berlin -> https://exusg.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com
In theory, there is no difference between theory and practice. In practice, there is.
- Bearbeitet Evgenij Smirnov Dienstag, 29. Mai 2018 06:22 typo
- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Donnerstag, 31. Mai 2018 22:00
- Als Antwort markiert Denniver ReiningMVP, Moderator Montag, 4. Juni 2018 12:56
-
Danke für die ausführliche Antwort, das hat mir weiter geholfen.
Habe nun etwas experimentiert und habe nun ein Scipt das mir die Information en gibt die ich brauche:
Start-Transcript -Path 'C:\Test\Festplatte.txt'
Get-WmiObject Win32_USBControllerDevice | foreach {
$device = [wmi]($_.Dependent)
$disk = Get-WmiObject Win32_DiskDrive -Filter "PNPDeviceID='$($device.DeviceID -replace '\\','\\')'"
if ($disk) {
"Model: $($disk.Model)"
"Size: $([math]::Round(($disk.Size / 1GB),0))GB"
Get-Volume
}
}
Stop-TranscriptMein einziges Problem ist nun dass in das Text Dokument welches ausgegeben wird nicht alles geschrieben wird, sondern nur folgendes:
**********************
Die Aufzeichnung wurde gestartet. Die Ausgabedatei ist "C:\Test\Festplatte.txt".
Model: WD My Passport 0827 USB Device
Size: 2794GB
**********************
Ende der Windows PowerShell-Aufzeichnung
Endzeit: 20180529161954
**********************
Kannst du mir da weiterhelfen ?
-
Kannst du mir da weiterhelfen ?
Evgenij Smirnov
I work @ msg services ag, Berlin -> http://www.msg-services.de
I blog (in German) @ http://it-pro-berlin.de
my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
Exchange User Group, Berlin -> https://exusg.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com
In theory, there is no difference between theory and practice. In practice, there is.