В 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