В Windows XP - как использовать фоновые задания PowerShell, для которых требуется проверка подлинности Windows

Я пытаюсь запустить некоторые функции в фоновом режиме сценария PoSh. Работа никогда не завершается, но работает нормально, когда вызывается нормально. Я сузил проблему до следующей строки:

Эта строка отлично работает:

$ws = New-WebServiceProxy  "http://host/Service?wsdl" -UseDefaultCredential

но эта линия навсегда блокирует

start-job { New-WebServiceProxy "same url" -UseDefaultCredential } `
 | wait-job | Receive-Job

Некоторые подробности: сервис локальный и требует проверки подлинности Windows. Клиент XP & server 2003.

Зачем? Как мне заставить его работать?

3 ответа

Вы можете использовать командлеты ConvertFrom-SecureString и ConvertTo-SecureString

После запуска

$securestring = read-host -assecurestring
convertfrom-securestring $securestring | out-file c:\securestring

После этого вы сможете использовать защищенный файл на диске.

$pass = Get-Content c:\securestring | convertto-securestring
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist “domain\administrator”,$pass

а также

start-job { New-WebServiceProxy "same url" -Credential $cred } | wait-job | Receive-Job

У меня нет каких-либо веб-сервисов ASMX, чтобы проверить это, но если вы посмотрите на помощь Start-Job, вы увидите "-Authentication-" и "-Credential". Первый указывает Default, Basic, Credssp, Digest, Kerberos, Negotiate и NegotiateWithImplicitCredential. Второй может быть использован для предоставления реальных учетных данных для запуска задания.

Надеюсь, это поможет.

Получил это на работу. На какой ОС вы работаете? XP или 2003 может быть проблемой.

start-job { 
        $zip = New-WebServiceProxy "http://www.webservicex.net/uszip.asmx?WSDL"  -UseDefaultCredential 
} | Wait-Job | Receive-Job

$zip | get-member -type method
Другие вопросы по тегам