我编写了一个Console应用程序,它向ASMX Web服务(在Sharepoint中)发出HTTP POST,我希望用WinRM远程调用它。我编写了一个PowerShell进程,它捆绑了构建的应用程序,将其移动到目标服务器,并在本地执行它。这个过程完全正常(即移动复制,你有什么),但是当它进入Web服务调用时失败。查看Fiddler上的日志,即使正在使用具有所有适当权限的帐户运行应用程序,HTTP Post请求也根本没有凭据。
由于应用程序在本地移动到目标服务器,我可以在本地运行它,我已经完成了,并且它完全正常,因为Fiddler日志在标题中显示正确的凭据。
我不确定问题所在的位置,但我很难想到它的代码,因为它在本地运行时工作正常。它可能与WinRM进程有关,但完全相同的过程适用于其他环境(该项目是部署数据库,ssis包等的更大部署解决方案的一部分)。
如果需要,我很乐意提供某些部分的代码,并且非常感谢任何基本的故障排除建议。
修改
我在xml文件中指定的用户凭据,其中包含用户名和散列密码,如Powershell中所示
powershell.exe -version 3.0 -ExecutionPolicy RemoteSigned -command "& { $cred=Import-Clixml '%CREDENTIAL_FILENAME%' ; $cred.Password=ConvertTo-SecureString $cred.Password ; $Credential=New-Object System.Management.Automation.PsCredential($cred.UserName, $cred.Password) ; invoke-command -computername %MACHINE% -filepath %Result% -Credential $Credential }"