我编写了一个控制台应用程序,它向我希望使用 WinRM 远程调用的 ASMX Web 服务(在 Sharepoint 内)发出 HTTP POST。我编写了一个 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 }"