Em vez de configurar remotamente a configuração, você pode simplesmente criar uma tarefa agendada por meio da Diretiva de Grupo. Como você mencionou, a tarefa criada durante o método normal usa um ID de volume; sua ação é algo como isto:
vssadmin.exe Create Shadow /AutoRetry=15 /For=\?\Volume{f9d9bfa1-f506-f24f-f54f-fe6ef47fd6f4}\
Então, é claro, o desafio para você seria criar um GPO que funcionasse para todos os computadores.
Proponho que sua agenda seja um pequeno snippet do powershell que encontre o ID do volume e chame o mesmo comando.
Suponho que você queira fazer isso para a unidade do sistema. Nesse caso, código como esse deve funcionar no PowerShell 2.0 +:
$volID = Get-WmiObject Win32_Volume | Where-Object { $_.DriveLetter -ieq $env:SYSTEMDRIVE } | Select-Object -ExpandProperty DeviceID
Start-Process 'vssadmin.exe' -ArgumentList "Create Shadow /AutoRetry=15 /For=$volID" -Wait
Isto é mostrado como 2 linhas aqui para que você possa ver mais facilmente o que está acontecendo, mas obviamente se você pretende chamar sua tarefa sem um arquivo de script externo (o que complicaria as coisas) você teria que ter tudo em uma linha . Você pode separar as linhas com um ponto-e-vírgula, você pode simplesmente incorporar toda a linha de recuperação de ID do volume na string com $()
, etc.
Você também pode usar o parâmetro -EncodedCommand
do powershell para lidar com citações. Isso permite que você tenha um script legível de várias linhas que pode ser armazenado em um compartilhamento em algum lugar. Você base64 codifica esse script e depois passa a coisa toda para o powershell com -EncodedCommand
.
Eu posso expandir essas opções, se necessário, supondo que esse código atenda às suas necessidades.