【发布时间】:2014-01-23 16:04:07
【问题描述】:
动机:
正如我们在Project Server Architecture中看到的那样
PSI 中用于 Web 服务的基于 SOAP 的 ASMX 接口在 Project Server 2013 中仍然可用,但已弃用。
原样
我有一些 PowerShell 客户端 sn-ps 用于与 Project Server 交互。与服务器通信的标准方式是 PSI ASMX Web 服务。
未来
我想将 sn-ps 重构为使用 PSI WCF Web 服务的标准。
结果
例如下面的简单代码可以正常工作:
$Passwd = Get-Content $home\Documents\Password.txt | ConvertTo-SecureString
$Credential = New-Object -typename System.Management.Automation.PsCredential -argumentlist "user_name",$Passwd
$PWAUrl = "http://project_server_name/PWA"
$ProjSvcURL = $PWAUrl + "/_vti_bin/PSI/Project.asmx?wsdl"
$ProjSvcProxy = New-WebServiceProxy -uri $ProjSvcURL -credential $Credential
$projDataSet = $ProjSvcProxy.ReadProjectList()
$projDataSet.Tables[0].Rows.Count
但简单的转换:
$Passwd = Get-Content $home\Documents\Password.txt | ConvertTo-SecureString
$Credential = New-Object -typename System.Management.Automation.PsCredential -argumentlist "user_name",$Passwd
$PWAUrl = "http://project_server_name/PWA"
$ProjSvcURL = $PWAUrl + "/_vti_bin/PSI/ProjectServer.svc"
...
消息失败:
New-WebServiceProxy : 请求失败,HTTP 状态 400: Bad Request。
这是 IIS 日志摘录:
2014-01-05 13:50:41 10.15.43.7 GET /PWA/_vti_bin/PSI/ProjectServer.svc - 80 - XXX.XXX.XXX.XXX Mozilla/4.0+(兼容;+MSIE+6.0;+ MS+Web+服务+客户端+协议+2.0.50727.5472) 401 1 2148074254 125
2014-01-05 13:50:41 10.15.43.7 GET /PWA/_vti_bin/PSI/ProjectServer.svc - 80 - XXX.XXX.XXX.XXX Mozilla/4.0+(兼容;+MSIE+6.0;+ MS+Web+服务+客户端+协议+2.0.50727.5472) 401 2 5 328
2014-01-05 13:50:41 10.15.43.7 GET /_vti_bin/PSI/ProjectServer.svc/ntlm - 80 用户名 XXX.XXX.XXX.XXX Mozilla/4.0+(兼容;+MSIE+6.0;+ MS+Web+服务+客户端+协议+2.0.50727.5472) 400 0 0 140
2014-01-05 17:58:33 10.15.43.7 GET /PWA/_vti_bin/PSI/ProjectServer.svc - 80 - XXX.XXX.XXX.XXX Mozilla/4.0+(兼容;+MSIE+6.0;+ MS+Web+服务+客户端+协议+2.0.50727.5472) 401 2 5 312
2014-01-05 17:58:33 10.15.43.7 GET /PWA/_vti_bin/PSI/ProjectServer.svc - 80 - XXX.XXX.XXX.XXX Mozilla/4.0+(兼容;+MSIE+6.0;+ MS+Web+服务+客户端+协议+2.0.50727.5472) 401 1 2148074254 156
2014-01-05 17:58:33 10.15.43.7 GET /_vti_bin/PSI/ProjectServer.svc/ntlm - 80 用户名 XXX.XXX.XXX.XXX Mozilla/4.0+(兼容;+MSIE+6.0;+ MS+Web+服务+客户端+协议+2.0.50727.5472) 400 0 0 109
有趣的是,我找不到任何将 WCF PSI 与 PowerShell 结合使用的示例。 有没有人尝试过这样做? 有人成功吗? 任何人都可以发布任何sn-p吗?
【问题讨论】:
-
Bad Request是来自您的 Web 服务器的响应。它的日志对此有何评论? -
我没有看到与此消息对应的 IIS 事件日志记录。是否有任何其他事件日志可以包含预期事件?
-
IIS 通常记录到文件,而不是事件日志。检查网站配置。
-
添加在上面。有用吗?
标签: wcf web-services powershell psi