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

时间:2010-04-20 16:51:05

标签: powershell powershell-remoting

我正在尝试在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 个答案:

答案 0 :(得分:1)

您可以使用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

答案 1 :(得分:0)

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

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

$zip | get-member -type method

答案 2 :(得分:0)

我没有任何ASMX网络服务来测试这个,但是如果你看看Start-Job的帮助,你会看到'-Authentication-和'-Credential'。第一个指定Default,Basic,Credssp,Digest,Kerberos,Negotiate和NegotiateWithImplicitCredential。第二个可用于提供运行作业的实际凭据。

希望有所帮助。