Excluir cópias de sombra remotamente

3

Atualmente, uso DISKSHADOW para remover cópias de sombra de nossos servidores Hyper-V. Para fazer isso eu tenho que entrar no servidor, mas psexec não funciona.

psexec \hyper-v-server diskshadow
DISKSHADOW> Error reading from console. Win32 error: 0x6
The handle is invalid.

Acho que vssadmin funciona fazendo o acima, mas gostaria de criar um script com o PowerShell e remover as cópias de sombra de forma sutil. Nenhuma dessas ferramentas fornece saída utilizável no PowerShell.

Eu fiz um pouco de pesquisa, mas não encontrei nenhuma maneira de consultar instantâneos com o PowerShell, local ou remotamente. Imagino que isso envolva o uso do Get-WMIObject CMDlet para consultar as informações relevantes do WMI, mas só posso encontrar o método Win32_ShadowCopy.Create() .

EDITAR: Para ficar claro, o que eu gostaria de ser objetos que eu possa manipular usando o PowerShell.

    
por john 25.07.2013 / 15:41

2 respostas

4

Você pode usar o cmdlet Get-WMIObject para remover remotamente cópias de sombra. O exemplo abaixo demonstra como isso pode funcionar. Deve-se observar que o cmdlet Get-WMIObject retornou um objeto nulo no caso em que não havia cópias de sombra remotas disponíveis. Isso significa que talvez ainda seja necessária uma combinação de comunicação remota do PowerShell e a ferramenta vssadmin para criar remotamente cópias de sombra.

No servidor de destino (de um prompt de comando elevado), vamos primeiro criar uma cópia de sombra para que ela esteja disponível:

vssadmin create shadow /for=c:

Do servidor de gerenciamento:

$shadowCopies = Get-WMIObject -Class Win32_ShadowCopy -Computer <TARGET SERVER NAME>
$shadowCopies | % {$_.DeviceObject}  # Lists out just the names of the copies
$shadowCopies | Get-Member -View All # Lists all members even hidden ones such as "delete"
$shadowCopies[0].Delete()            # Deletes the first shadow copy when more than one exists
$shadowCopies.Delete()               # Works when only a single shadow copy exists
    
por 30.07.2013 / 19:52
3

Você pode fazer isso remotamente com diskshadow. Para fazer isso, escreva um arquivo em lote contendo os comandos desejados e coloque-o em algum lugar no servidor de destino, em seguida: psexec \remotehost diskshadow /s C:\path\to\script.bat . Você também pode usar um local de rede para o caminho.

    
por 25.07.2013 / 15:59