удаленный скрипт Powershell Запланированная задача

удаленный скрипт Powershell Запланированная задача

У меня возникли проблемы с запуском скрипта Powershell в качестве запланированной задачи. Скрипт удаленно подключается к двум хостам Hyper-V, запрашивает статус репликации и отправляет мне результат по электронной почте. Скрипт отлично работает, когда я запускаю его вручную, либо в Powershell ISE, либо запускаю скрипт напрямую, однако, когда я запускаю его в качестве запланированной задачи, задача застревает в состоянии выполнения, и я никогда не получаю результат.

Я проверил, что моя настройка запланированных задач работает правильно, заменив скрипт тем, который просто записывает текстовый файл в локальную папку, так что это не так. Я также вошел в систему как тот же пользователь, под которым выполняется задача, когда я вручную запускаю скрипт, так что это не так, что я упускаю?

Вот мой сценарий:

$array = @("host1.domain.com", "host2.domain.com")

for ($i=0; $i -lt $array.length; $i++) {

     $pass = cat C:\Scripts\Creds.txt | convertto-securestring
     $mycred = new-object -typename System.Management.Automation.PSCredential -argumentlist "username",$pass

Invoke-Command -ComputerName $array[$i] -Credential $mycred -FilePath "C:\Scripts\Check_VMReplication.ps1"
}

Скрипт вызывает другой скрипт в той же папке:

$hstname = Hostname
$Replication = Get-VMReplication
$MessageFail = $hstname + ' Replication Alert'
$SmtpServer = 'smtp.server.com'

hostname > C:\Scripts\iveremoted.txt

for ($i=0; $i -lt $Replication.length; $i++) {

        $MessageBody = $hstname+ " has reported a replication status of " + $Replication.health[$i] + ' for server ' + $Replication.name[$i]
        $FailMessageSubject = $Replication.name[$i] + " Replication Alert"
        if ($Replication.health[$i] -ne 'Normal') {

         send-mailmessage -to "[email protected]>" -from '[email protected]' -subject $MessageFail  -body $MessageBody -smtpServer $SmtpServer
    }
    else{
        send-mailmessage -to "[email protected]" -from '[email protected]' -subject 'Everything's OK'  -body $MessageBody -smtpServer $SmtpServer
    }

}

Похоже, скрипт не может войти в систему, поскольку файл iveremoted.txt не записывается на удаленную машину.

Есть идеи, что я мог упустить?

решение1

Я не уверен, почему, но если я запущу код Check_VMReplication.ps1 с помощью

Invoke-Command  -Credential $mycred -ScriptBlock {CODE GOES HERE} 

вместо второго скриптового файла он нормально запускается. Думаю, мне придется так и сделать.

Связанный контент