在Windows XP上 - 如何使用需要Windows身份验证的PowerShell后台作业

问题描述:

我试图在PoSh脚本的后台运行一些功能。工作从未完成,但在正常工作时工作正常。我已经缩小问题下到下面一行:在Windows XP上 - 如何使用需要Windows身份验证的PowerShell后台作业

该行正常工作:

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

,但此行的块永远

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

一些细节:该服务是本地的,并且需要Windows身份验证。客户端是XP &服务器2003.

为什么?我如何使它起作用?

得到这个工作。你在运行什么操作系统? XP或2003年可能是一个问题。

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

$zip | get-member -type method 
+0

该服务需要Windows身份验证 – 2010-04-21 01:39:35

我没有任何ASMX Web服务测试这个打击,但如果你看看启动时的工作的帮助下,你会看到“-Authentication-和‘-Credential’。第一个指定Default,Basic,Credssp,Digest,Kerberos,Negotiate和NegotiateWithImplicitCredential。第二个可用于提供实际凭据来运行该作业。

希望有所帮助。

+0

我找回开始作业:指定的身份验证机制“...”不受支持。此操作仅支持“默认”。而且似乎没有任何方法可以非交互地提供凭证 – 2010-04-21 17:07:08

可以使用ConvertFrom-SecureString的和的ConvertTo-SecureString的cmdlet的

一旦运行

$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

这很有帮助,但只有在密码不变的情况下才有效。 – 2010-04-22 22:17:42