O agendador de tarefas precisa saber para executar o script como administrador.
Eu tenho um arquivo em lotes que exclui alguns arquivos das unidades de rede e chama um script powershell. O script powershell obtém os detalhes de espaço de todas as unidades de rede e envia um email. Abaixo está o comando usado para obter os detalhes do espaço:
$disks = Get-WmiObject -ComputerName "ABCD001" -Class Win32_LogicalDisk -Filter "DriveType = 4";
$deviceID = $disk.DeviceID;
foreach($disk in $disks)
{
$totalSpaceGB = [Math]::Round([float]$disk.Size / 1073741824, 2);
$freeSpaceGB = [Math]::Round([float]$disk.FreeSpace / 1073741824, 2);
$disk, 'TotalSize = ', $totalSpaceGB + " Gb", 'FreeSpace = ', $freeSpaceGB + " Gb", $disk.ProviderName -join ' ' | Out-File -FilePath $FilePath -Append -Width 200;
}
Abaixo está o comando usado para obter os detalhes do espaço das unidades locais:
$disks = Get-WmiObject -ComputerName $computer -Class Win32_LogicalDisk -Filter "DriveType = 3";
O problema é que, quando eu executo este arquivo de lote manualmente, ele funciona bem. Mas quando agendado ou executado a partir do Agendador de Tarefas, o resultado para as unidades de rede é fornecido abaixo:
TotalSize = 0 Gb FreeSpace = 0 Gb
Parece que não é possível conectar-se às unidades de rede. Como eu disse anteriormente, quando eu entro e executo o script em lote manualmente, ele retorna o resultado desejado.
Por favor ajude !!!
O agendador de tarefas precisa saber para executar o script como administrador.
Tags windows batch powershell