2017-06-27 3 views
0

Comment trouver l'espace disponible sur tous les volumes de lecteur actifs en Go sur un serveur Windows 2012 à l'aide de la ligne de commande et/ou de powershell.rechercher l'espace disponible en Go sur tous les volumes de lecteur dans la ligne de commande Windows 2012

Jusqu'à présent, j'essayé cette commande, qui échoue:

wmic logicaldisk get size,freespace,caption 
Invalid GET Expression. 

a également essayé cette commande, mais il donne la réponse en octets qui est difficile à interpréter. Si je pouvais obtenir ce lire dans GB:

PS C:\Users\us-tdunphy> wmic diskdrive list brief /format:list 


Caption=AWS PVDISK SCSI Disk Device 
DeviceID=\\.\PHYSICALDRIVE1 
Model=AWS PVDISK SCSI Disk Device 
Partitions=1 
Size=268432012800 


Caption=AWS PVDISK SCSI Disk Device 
DeviceID=\\.\PHYSICALDRIVE0 
Model=AWS PVDISK SCSI Disk Device 
Partitions=1 
Size=128849011200 

J'ai aussi essayé cette commande PowerShell qui donne et erreur:

PS C:\Users\us-tdunphy> powershell -command "& {Get-WmiObject -Class Win32_LogicalDisk -Filter 'DriveType = 3' |select PSComputerName, Caption,@{N='Capacity_GB'; E={[math]::Round(($_.Size/1GB), 2)}},@{N='FreeSpace_GB'; E={[math]::Round(($_.FreeSpace/1GB), 2)}},@{N='PercentUsed'; E={[math]::Round(((($_.Size - $_.FreeSpace)/$_.Size) * 100), 2) }},@{N='PercentFree'; E={[math]::Round((($_.FreeSpace/$_.Size) * 100), 2) }}}" 
At line:1 char:277 
+ ... - .FreeSpace)/.Size) * 100), 2) }},@{N='PercentFree'; E={[math]::Round(((.Free ... 
+     ~ 
You must provide a value expression following the '/' operator. 
At line:1 char:278 
+ ... .FreeSpace)/.Size) * 100), 2) }},@{N='PercentFree'; E={[math]::Round(((.FreeS ... 
+     ~~~~~ 
Unexpected token '.Size' in expression or statement. 
At line:1 char:277 
+ ... - .FreeSpace)/.Size) * 100), 2) }},@{N='PercentFree'; E={[math]::Round(((.Free ... 
+     ~ 
Missing closing ')' in expression. 
At line:1 char:238 
+ ... ercentUsed'; E={[math]::Round((((.Size - .FreeSpace)/.Size) * 100), 2) }},@{N= ... 
+     ~ 
Missing closing '}' in statement block. 
At line:1 char:294 
+ ... Size) * 100), 2) }},@{N='PercentFree'; E={[math]::Round(((.FreeSpace/.Size) * ... 
+     ~ 
The hash literal was incomplete. 
At line:1 char:3 
+ & {Get-WmiObject -Class Win32_LogicalDisk -Filter 'DriveType = 3' |select PSComp ... 
+ ~ 
Missing closing '}' in statement block. 
At line:1 char:294 
+ ... Size) * 100), 2) }},@{N='PercentFree'; E={[math]::Round(((.FreeSpace/.Size) * ... 
+     ~ 
Unexpected token ')' in expression or statement. 
At line:1 char:296 
+ ... ze) * 100), 2) }},@{N='PercentFree'; E={[math]::Round(((.FreeSpace/.Size) * 10 ... 
+     ~ 
Unexpected token '}' in expression or statement. 
At line:1 char:297 
+ ... e) * 100), 2) }},@{N='PercentFree'; E={[math]::Round(((.FreeSpace/.Size) * 100 ... 
+     ~ 
Unexpected token '}' in expression or statement. 
At line:1 char:370 
+ ...) * 100), 2) }}} 
+     ~ 
Unexpected token '}' in expression or statement. 
    + CategoryInfo   : ParserError: (:) [], ParentContainsErrorRecordException 
    + FullyQualifiedErrorId : ExpectedValueExpression 

Merci

+0

Qu'avez-vous essayé, et comment avez-vous échoué? Idéalement, vous devriez fournir un [exemple minimal, complet et vérifiable] (https://stackoverflow.com/help/mcve) de ce que vous avez essayé, et inclure des informations spécifiques sur la façon dont il a échoué, avec des messages d'erreur et/ou sortie erronée. SO n'est pas un service d'écriture de code; les meilleures questions sont celles qui fournissent des informations utiles pour que ceux qui répondent puissent vous guider dans l'élaboration de votre propre réponse correcte. Voir [Comment poser une bonne question] (https://stackoverflow.com/help/how-to-ask). –

+0

ok, je vais éditer la question avec quelques exemples. merci – bluethundr

+0

Votre 3ème ligne d'exemple a été cassée deux fois, elle a fonctionné alors inchangée ici dans une session cmd, Pour ne pas avoir la première session powershell consommer le '$ _' vous devrez échapper le' $ 'avec un backtick' \ '' - -> '\' $ 'alors ça marche aussi. Pour obtenir une table, insérez '| Format-Table -auto' devant la dernière accolade. – LotPings

Répondre

0

Vous pouvez essayer de commencer à travailler sur:

GWMI Win32_LogicalDisk | 
    % { 
     "DeviceID: $($_.DeviceID)" 
     "FreeSpace: $($_.FreeSpace/1GB)GB" 
    } 
+0

Merci qui a bien fonctionné! Mais comment obtenir des étiquettes de disque là-bas? – bluethundr

+0

@bluethundr vérifier l'édition. Dans le futur, vous pouvez utiliser '(GWMI Win32_LogicalDisk) | GM' pour voir tous les différents membres de l'objet que vous pouvez appeler/utiliser – TheIncorrigible1

0

Essayez de coder votre commande, CMD n'aime pas ces longues chaînes avec des pipelines:

$command = 'Get-WmiObject -Class Win32_LogicalDisk | Select-Object DeviceID,VolumeName,@{N="SizeGB";E={[Math]::Round($_.Size /1gb,1)}},@{N="FreeSpaceGB";E={[Math]::Round($_.FreeSpace /1gb,1)}}' 
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command) 
$encodedCommand = [Convert]::ToBase64String($bytes) 
powershell.exe -encodedCommand $encodedCommand