PSI WCF New-WebServiceProxy

时间:2014-01-06 09:30:45

标签: wcf web-services powershell psi

动机:

我们可以在Project Server Architecture

中阅读
  

PSI中用于Web服务的基于SOAP的ASMX接口仍可在Project Server 2013中使用,但已弃用。

的As-Is

我有一些用于与Project Server交互的PowerShell客户端代码段。与服务器通信的标准方法是PSI ASMX Web服务。

我想将这些片段重构为使用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:错误请求。

这是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 + Services + Client + Protocol + 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 + Services + Client + Protocol + 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 user_name 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 + Services + Client + Protocol + 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 + Services + Client + Protocol + 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 user_name XXX.XXX.XXX.XXX Mozilla / 4.0 +(兼容; + MSIE + 6.0; + MS + Web +服务+客户端+协议+ 2.0.50727.5472)400 0 0 109

有趣的是,我找不到任何在PowerShell中使用WCF PSI的示例。 有没有人试图这样做? 有人成功吗? 任何人都可以发布任何代码段吗?

1 个答案:

答案 0 :(得分:0)

我遇到了和你一样的问题。 Project Server脚本使用asmx并希望将它们移植到WCF服务挂件。

经过一番挖掘后,我发现了以下MSDN网站: http://msdn.microsoft.com/en-us/library/office/ms488627(v=office.15).aspx#pj15_PSIRefOverview_PSI

在那里你得到了这张照片,为整个WCF SVC做了一些亮点:它们就在那里,而不是你期望它们在哪里......

https://app.box.com/s/tsi7150bgra3rpg4n6yu

我试着打电话给服务 - 它就像一个魅力。

我希望这对你也有帮助!

P.S。为盒子链接道歉......没有足够的声誉发布图片;)