2

Строки ниже отлично работают в командной строке Powershell, но не выполняются с запланированной задачей.PSSessionStateBroken with start-job -credential в запланированной задаче

$pass = gc C:\secrets\shhh.txt | convertTo-secureString 
$Cred = new-object -typeName System.management.automation.psCredential -argumentlist "domain\domainUser",$pass 

$path = "\\server\share\folder" 
$j = start-job {gci -path $args[0]} -cred $Cred -argumentList $path | wait-job | receive-job 

$body = $j | out-string 
$error | out-file C:\temp\err.txt 
send-mailMessage -to [email protected] -from [email protected] -subject halp -smtpserver mailserver.domain.tld -body $body 

В C: \ Temp \ err.txt в ОС Windows 2008R2 запланированную задачу оставляет хлебную крошку:

[localhost] The background process exited abnormally. 
    + CategoryInfo   : OpenError: (localhost:String) [], PSRemotingTransportException 
    + FullyQualifiedErrorId : 2101,PSSessionStateBroken 

... который приносит нам this Microsoft bug report. В отчете упоминается обходной путь с удаленным локальным ходом, который звучит немного грязно. Должен ли я пойти туда?

Есть ли лучшее решение? Может быть, с одним из командлетов * session или invoke-command? Заданное значение задачи Start in установлено, но, возможно, фоновый процесс использует некоторую переменную каким-то образом, например so?

Не повезло еще с вызовом powershell.exe с –version 2 или с -command "& {bigKlugeyScriptblock}" синтаксисом.

Редактировать: Я пытаюсь избежать создания новой учетной записи домена для выполнения задачи. Задача не может выполняться как domainUser от $cred, потому что у этой учетной записи не должно быть разрешений на localhost.

ответ

2

В некоторых возможных обходных работ, как о:

  1. Put альтернативных учетных данных на самой запланированной задачи
  2. Использование команды runas начать powershell.exe как другой пользователь
  3. Использование net use/пользователя параметр для аутентификации доступа к сетевому пути

    [/USER:[dotted domain name\]username] 
    [/USER:[[email protected] domain name] 
    
+0

Спасибо. 1) см. Редактирование 2) Перспективные. Чтение на runas/savecred и cmdkey.exe и будет отчитываться. – noam

+0

Я добавил еще одно возможное обходное использование с использованием сетевого использования –

+0

Рабочее положение # 1 здесь достаточно. Я в порядке предоставляю «Лог в качестве пакетного задания» в $ cred в локальной политике безопасности, и этой привилегии, похоже, достаточно для запуска запланированной задачи. – noam

Смежные вопросы