Como obtenho o espaço livre de um disco remoto sem privilégios de administrador? (Janelas)

2

Sou administrador em dois servidores (Win 2008 R2). Eu tenho uma tarefa agendada que copia arquivos grandes de um compartilhamento em um servidor para outro. Antes de fazer a cópia, verifiquei se o disco de destino no outro servidor tem espaço livre suficiente. Eu tenho executado essas tarefas com minha própria conta e quero mudar para uma conta do sistema com privilégios mais baixos do que eu.

Estou usando a seguinte receita para obter a taxa de espaço livre:

PowerShell.exe Get-WmiObject Win32_LogicalDisk -ComputerName <REMOTESERVER> -Filter "DeviceID='C:'" | Foreach-Object {$_.FreeSpace / $_.Size}

Funciona na minha conta, mas me fornece 0x80070005 (E_ACCESS DENIED) da conta não administrativa.

Devo até usar o WMI para isso ou há algo mais simples?

    
por giltay 21.07.2015 / 21:48

3 respostas

1

Você pode usar o WMI para obter o espaço livre em disco como um usuário não administrativo, mas antes de tudo precisa alterar as permissões do WMI no servidor remoto.

A partir do wmimgmt.msc no servidor remoto, clique com o botão direito do mouse em "WMI Control (Local)", selecione a guia Segurança, destaque CIMv2 e clique no botão "Segurança". A partir daqui, forneça ao usuário que você deseja poder executar o script como permissão "Ativar Remoto" e o script deve ser capaz de obter as informações remotas do WMI.

    
por 21.07.2015 / 22:57
1

Você pode obter o tamanho mapeando a unidade para uma letra e consultando-a com o cmdlet Get-PSDrive. Funciona sem acesso de administrador no servidor ou até mesmo grava o acesso ao compartilhamento.

net use T: \server\share
$freebytes=(Get-PSDrive T).Free
net use T: /delete
    
por 22.07.2015 / 01:08
0

Existe um EXE não baseado em WMI chamado Freedisk que funciona sem privilégios de administrador.
link
Retorna 0 se houver espaço suficiente e 1 se não houver espaço suficiente.

PS C:\temp> freedisk \server1\share1 9mb
OK
PS C:\temp> $lastExitCode
0
PS C:\temp> freedisk \server1\share1 99999999999999999mb
To small!!
PS C:\temp> $lastExitCode
1
    
por 21.07.2015 / 22:14