Ich habe diesen Einzeiler:
get-WmiObject win32_logicaldisk -Computername remotecomputer
und die Ausgabe ist folgende:
DeviceID : A:
DriveType : 2
ProviderName :
FreeSpace :
Size :
VolumeName :
DeviceID : C:
DriveType : 3
ProviderName :
FreeSpace : 20116508672
Size : 42842714112
VolumeName :
DeviceID : D:
DriveType : 5
ProviderName :
FreeSpace :
Size :
VolumeName :
Wie komme ich Freespace
und Size
von DeviceID
C:
? Ich muss nur diese beiden Werte ohne weitere Informationen extrahieren. Ich habe es mit versuchtSelect
Cmdlet , aber ohne Wirkung.
Bearbeiten: Ich muss nur die numerischen Werte extrahieren und sie in Variablen speichern.
powershell
scripting
powershell-2.0
Culter
quelle
quelle
[Math]::Round($Disk.Freespace / 1GB)
1mb
ein Wert von1048576
und nicht zurück1000000
????1MiB
(mit der richtigen Groß- und Kleinschreibung), wird aber normalerweise in Kleinbuchstaben ohne das "i" angezeigt. Siehe Mebibyte .Viel einfachere Lösung:
und für Remote-Computer (Bedürfnisse
Powershell Remoting
)quelle
psexec -u administrator \\[computer name or IP] powershell "get-psdrive C"
Nur ein Befehl einfach süß und sauber, aber dies funktioniert nur für lokale Festplatten
Sie können diesen Befehl weiterhin auf einem Remoteserver verwenden, indem Sie einen Enter-PSSession -Computername Servername ausführen und dann Get-PSDrive ausführen. Dadurch werden die Daten so abgerufen, als hätten Sie sie vom Server ausgeführt.
quelle
Ich habe vor einiger Zeit eine erweiterte PowerShell-Funktion (Skript-Cmdlet) erstellt, mit der Sie mehrere Computer abfragen können.
Der Code für die Funktion ist etwas mehr als 100 Zeilen lang. Sie finden ihn hier: PowerShell-Version des Befehls df
Beispiele finden Sie im Abschnitt Verwendung . Das folgende Verwendungsbeispiel fragt eine Reihe von Remotecomputern ab (Eingabe aus der PowerShell-Pipeline) und zeigt die Ausgabe in einem Tabellenformat mit numerischen Werten in lesbarer Form an:
quelle
Bei den anderen Vorschlägen sind zwei Probleme aufgetreten
1) Laufwerkszuordnungen werden nicht unterstützt, wenn Sie die Powershell unter Task Scheduler ausführen
2) Möglicherweise wird Ihnen der Zugriff verweigert. Fehler Fehler beim Versuch, "get-WmiObject" auf Remotecomputern zu verwenden (natürlich abhängig von Ihrer Infrastruktureinrichtung).
Die Alternative, die unter diesen Problemen nicht leidet, ist die Verwendung von GetDiskFreeSpaceEx mit einem UNC-Pfad:
quelle
Eine andere Möglichkeit besteht darin, einen String in ein WMI-Objekt umzuwandeln:
Sie können die Ergebnisse auch durch 1 GB oder 1 MB teilen, wenn Sie verschiedene Einheiten möchten:
Ausgabe ist:
Remotecomputer C: has 252.7 GB free of 298.0 GB Total
quelle
Befehlszeile:
Ausgabe:
Befehlszeile:
aus:
Befehlszeile:
aus:
quelle
wmic logicaldisk get size
berücksichtigt nicht den reservierten Speicherplatz, obwohl ... in Powershellget-volume
die praktische Gesamtgröße (dh minus reservierter Speicherplatz) zurückgegeben wird, aber wenn ich es versucheget-volume | format-list size
, wird die Gesamtgröße plus der reservierte Speicherplatz angezeigt ... wie erhalte ich die Gesamtgröße minus reservierten Speicherplatz? für jedes Laufwerk mit Powershell ???quelle
quelle
Ich kenne psExec-Tools, die Sie hier herunterladen können
Es gibt eine psinfo.exe aus dem Tools-Paket. Die grundlegende Verwendung erfolgt auf folgende Weise in Powershell / cmd.
Sie könnten jedoch viele Optionen damit haben
Verwendung: psinfo [[\ computer [, computer [, ..] | @file [-u Benutzer [-p psswd]]] [-h] [-s] [-d] [-c [-t Trennzeichen]] [Filter]
\ computer Führen Sie den Befehl auf dem oder den angegebenen Remotecomputern aus. Wenn Sie den Computernamen weglassen, wird der Befehl auf dem lokalen System ausgeführt, und wenn Sie einen Platzhalter (\ *) angeben, wird der Befehl auf allen Computern in der aktuellen Domäne ausgeführt.
Filter Psinfo zeigt nur Daten für das Feld an, das dem Filter entspricht. Beispiel: "psinfo service" listet nur das Feld "Service Pack" auf.
quelle
Ich gehe mit Enter-PSsession pcName auf den Computer und tippe dann ein Get-PSDrive ein
Dadurch werden alle verwendeten und verbleibenden Laufwerke und Speicherplätze aufgelistet. Wenn Sie alle formatierten Informationen sehen möchten, leiten Sie sie wie folgt an FL weiter: Get-PSdrive | FL *
quelle
Ich habe diese einfache Funktion erstellt, um mir zu helfen. Dies erleichtert das Lesen meiner Aufrufe erheblich , da ich ein Get-WmiObject , Where-Object- Anweisungen usw. inline habe .
quelle
Wenn Sie mehrere Laufwerksbuchstaben überprüfen und / oder zwischen lokalen Laufwerken und Netzwerklaufwerken filtern möchten, können Sie mit PowerShell die WMI- Klasse Win32_LogicalDisk nutzen . Hier ist ein kurzes Beispiel:
Ich habe die oben beschriebene Technik verwendet, um ein Powershell-Skript zu erstellen, das alle Laufwerke überprüft und eine E-Mail-Benachrichtigung sendet, wenn sie ein benutzerdefiniertes Kontingent unterschreiten. Sie können es von diesem Beitrag auf meinem Blog erhalten.
quelle
PowerShell-Spaß
quelle