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

Я пытаюсь запустить некоторые функции в фоновом режиме скрипта 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 ]

1 голос
/ 22 апреля 2010

Вы можете использовать командлеты 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
0 голосов
/ 21 апреля 2010

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

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

0 голосов
/ 21 апреля 2010

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

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

$zip | get-member -type method
...