J'ai ce one-liner:
get-WmiObject win32_logicaldisk -Computername remotecomputer
et la sortie est la suivante:
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 :
Comment puis-je obtenir Freespace
et Size
de DeviceID
C:
? J'ai besoin d'extraire juste ces deux valeurs sans autres informations. Je l'ai essayé avec l' Select
applet de commande, mais sans effet.
Edit: J'ai besoin d'extraire les valeurs numériques uniquement et de les stocker dans des variables.
[Math]::Round($Disk.Freespace / 1GB)
1mb
renvoie une valeur de1048576
et non1000000
????1MiB
(avec la casse appropriée) mais est généralement affiché en minuscules, sans le «i». Voir Mebibyte .Solution beaucoup plus simple:
et pour les ordinateurs distants (besoins
Powershell Remoting
)la source
psexec -u administrator \\[computer name or IP] powershell "get-psdrive C"
Juste une commande simple douce et propre mais cela ne fonctionne que pour les disques locaux
Vous pouvez toujours utiliser cette commande sur un serveur distant en effectuant un Enter-PSSession -Computername ServerName, puis exécutez Get-PSDrive, il extraira les données comme si vous les exécutiez à partir du serveur.
la source
J'ai créé il y a quelque temps une fonction avancée PowerShell (cmdlet de script) qui vous permet d'interroger plusieurs ordinateurs.
Le code de la fonction fait un peu plus de 100 lignes, vous pouvez donc le trouver ici: Version PowerShell de la commande df
Consultez la section Utilisation pour des exemples. L'exemple d'utilisation suivant interroge un ensemble d'ordinateurs distants (entrée du pipeline PowerShell) et affiche la sortie dans un format de table avec des valeurs numériques sous une forme lisible par l'homme:
la source
J'ai rencontré deux problèmes avec les autres suggestions
1) Les mappages de lecteur ne sont pas pris en charge si vous exécutez le PowerShell sous le planificateur de tâches
2) Vous pouvez obtenir des erreurs d' accès refusé en essayant d'utiliser "get-WmiObject" sur des ordinateurs distants (en fonction de la configuration de votre infrastructure, bien sûr)
L'alternative qui ne souffre pas de ces problèmes est d'utiliser GetDiskFreeSpaceEx avec un chemin UNC:
la source
Une autre méthode consiste à convertir une chaîne en un objet WMI:
Vous pouvez également diviser les résultats par 1 Go ou 1 Mo si vous souhaitez des unités différentes:
La sortie est:
Remotecomputer C: has 252.7 GB free of 298.0 GB Total
la source
Ligne de commande:
Production:
ligne de commande:
en dehors:
ligne de commande:
en dehors:
la source
wmic logicaldisk get size
ne tient pas compte de l'espace réservé tho ... dans powershellget-volume
renvoie la taille totale pratique (c'est-à-dire moins l'espace réservé), mais quand j'essaye,get-volume | format-list size
il indique la taille totale plus l'espace réservé ... comment obtenir la taille totale moins l'espace réservé pour chaque lecteur avec PowerShell ???la source
la source
Je connais les outils psExec que vous pouvez télécharger ici
Il existe un psinfo.exe du package d'outils. L'utilisation de base est de la manière suivante dans PowerShell / cmd.
Cependant, vous pourriez avoir beaucoup d'options avec
Utilisation: psinfo [[\ ordinateur [, ordinateur [, ..] | @file [-u utilisateur [-p psswd]]] [-h] [-s] [-d] [-c [-t délimiteur]] [filtre]
\ computer Exécutez la commande sur l'ordinateur ou les ordinateurs distants spécifiés. Si vous omettez le nom de l'ordinateur, la commande s'exécute sur le système local et si vous spécifiez un caractère générique (\ *), la commande s'exécute sur tous les ordinateurs du domaine actuel.
filter Psinfo n'affichera que les données du champ correspondant au filtre. Par exemple, "psinfo service" répertorie uniquement le champ du service pack.
la source
Je distant dans l'ordinateur en utilisant Enter-PSsession pcName puis je tape Get-PSDrive
Cela listera tous les lecteurs et l'espace utilisé et restant. Si vous avez besoin de voir toutes les informations formatées, dirigez-les vers FL comme ceci: Get-PSdrive | FL *
la source
J'ai créé cette fonction simple pour m'aider. Cela rend mes appels beaucoup plus faciles à lire que d'avoir en ligne un Get-WmiObject , des instructions Where-Object , etc.
la source
Si vous souhaitez vérifier plusieurs lettres de lecteur et / ou filtrer entre les lecteurs locaux et réseau, vous pouvez utiliser PowerShell pour tirer parti de la classe WMI Win32_LogicalDisk . Voici un exemple rapide:
J'ai utilisé la technique ci-dessus pour créer un script Powershell qui vérifie tous les lecteurs et envoie une alerte e-mail chaque fois qu'ils passent en dessous d'un quota défini par l'utilisateur. Vous pouvez l'obtenir à partir de ce post sur mon blog.
la source
Amusement PowerShell
la source
Je viens de trouver la commande Get-Volume , qui retourne
SizeRemaining
, donc quelque chose comme(Get-Volume -DriveLetter C).SizeRemaining / (1e+9)
peut être utilisé pour voir resté Gb pour le disque C. Semble fonctionner plus rapidement queGet-WmiObject Win32_LogicalDisk
.la source