Eu tenho este one-liner:
get-WmiObject win32_logicaldisk -Computername remotecomputer
e a saída é esta:
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 :
Como faço para obter Freespace
e Size
de DeviceID
C:
? Preciso extrair apenas esses dois valores sem outras informações. Eu tentei com Select
cmdlet, mas sem efeito.
Edit: eu preciso extrair os valores numéricos apenas e armazená-los em variáveis.
powershell
scripting
powershell-2.0
culter
fonte
fonte
[Math]::Round($Disk.Freespace / 1GB)
1mb
retorna um valor de1048576
e não1000000
????1MiB
(com letras maiúsculas), mas geralmente é mostrado em letras minúsculas, sem o "i". Veja Mebibyte .Solução muito mais simples:
e para computadores remotos (necessidades
Powershell Remoting
)fonte
psexec -u administrator \\[computer name or IP] powershell "get-psdrive C"
Apenas um comando simples doce e limpo, mas isso só funciona para discos locais
Você ainda pode usar este comando em um servidor remoto executando Enter-PSSession -Computername ServerName e, em seguida, executar o Get-PSDrive, que extrairá os dados como se você o tivesse executado do servidor.
fonte
Eu criei uma função avançada do PowerShell (cmdlet de script) há algum tempo que permite consultar vários computadores.
O código da função tem pouco mais de 100 linhas, então você pode encontrá-lo aqui: Versão PowerShell do comando df
Confira o seção Uso para exemplos. O exemplo de uso a seguir consulta um conjunto de computadores remotos (entrada do pipeline do PowerShell) e exibe a saída em um formato de tabela com valores numéricos em formato legível por humanos:
fonte
Existem dois problemas que encontrei com as outras sugestões
1) Os mapeamentos de unidade não são suportados se você executar o PowerShell no agendador de tarefas
2) Você pode obter erros de erros de acesso negado tentando usar "get-WmiObject" em computadores remotos (dependendo da configuração de sua infraestrutura, é claro)
A alternativa que não sofre com esses problemas é usar GetDiskFreeSpaceEx com um caminho UNC:
fonte
Outra maneira é lançar uma string para um objeto WMI:
Além disso, você pode dividir os resultados por 1 GB ou 1 MB se quiser unidades diferentes:
O resultado é:
Remotecomputer C: has 252.7 GB free of 298.0 GB Total
fonte
Linha de comando:
Resultado:
linha de comando:
Fora:
linha de comando:
Fora:
fonte
wmic logicaldisk get size
não leva em conta o espaço reservado que ... no PowerShellget-volume
retorna o tamanho total prático (ou seja, menos o espaço reservado), mas quando tentoget-volume | format-list size
diz o tamanho total mais o espaço reservado ... como faço para obter o tamanho total menos o espaço reservado para cada unidade com PowerShell ???fonte
fonte
Sei de ferramentas psExec que você pode baixar aqui
Vem um psinfo.exe do pacote de ferramentas. O uso básico é da seguinte maneira em powershell / cmd.
No entanto, você pode ter muitas opções com ele
Uso: psinfo [[\ computador [, computador [, ..] | @arquivo [-u usuário [-p psswd]]] [-h] [-s] [-d] [-c [-t delimitador]] [filtro]
\ computer Executa o comando no computador remoto ou computadores especificados. Se você omitir o nome do computador, o comando será executado no sistema local e se você especificar um caractere curinga (\ *), o comando será executado em todos os computadores no domínio atual.
O filtro Psinfo mostrará apenas os dados do campo que corresponde ao filtro. por exemplo, "serviço psinfo" lista apenas o campo do service pack.
fonte
Eu acesso remoto ao computador usando Enter-PSsession pcName e, em seguida, digito Get-PSDrive
Isso listará todas as unidades e espaço usado e restante. Se você precisa ver todas as informações formatadas, canalize-as para FL assim: Get-PSdrive | FL *
fonte
Criei esta função simples para me ajudar. Isso torna minhas chamadas muito mais fáceis de ler, tendo em linha instruções Get-WmiObject , Where-Object , etc.
fonte
Caso queira verificar várias letras de unidade e / ou filtrar entre unidades locais e de rede, você pode usar o PowerShell para aproveitar a classe Win32_LogicalDisk WMI . Aqui está um exemplo rápido:
Usei a técnica acima para criar um script Powershell que verifica todas as unidades e envia um alerta por e-mail sempre que elas ficam abaixo da cota definida pelo usuário. Você pode obtê-lo neste post no meu blog.
fonte
PowerShell Fun
fonte
Acabei de encontrar o comando Get-Volume , que retorna
SizeRemaining
, então algo como(Get-Volume -DriveLetter C).SizeRemaining / (1e+9)
pode ser usado para ver Gb remanescente para o disco C. Parece que funciona mais rápido do queGet-WmiObject Win32_LogicalDisk
.fonte