1

您好,我正在尝试从 powershell 访问共享点列表。powershell 脚本从 ac# 应用程序执行。

如果我从 c# 应用程序运行,我会得到以下异常:

使用“1”参数调用“.ctor”的异常:“http://pc/websites/Test4/找不到 Web 应用程序。验证您输入的 URL 是否正确。如果 URL 应为现有内容提供服务,系统管理员可能需要添加映射到预期应用程序的新请求 URL。”

我的代码:

C#

     string cmdArg = "C:\\Scripts\\GroupChangeGroup.ps1 1";
                    Runspace runspace = RunspaceFactory.CreateRunspace();
                    runspace.ApartmentState = System.Threading.ApartmentState.STA;
                    runspace.ThreadOptions = PSThreadOptions.UseCurrentThread;
                        runspace.Open();
                    Pipeline pipeline = runspace.CreatePipeline();

 Command newcom = new Command("Add-PSSnapin");
                      newcom.Parameters.Add("Name", "microsoft.exchange.management.powershell.e2010");
                      pipeline.Commands.Add(newcom);

                  Command newcom2 = new Command("Add-PSSnapin");
                  newcom2.Parameters.Add("Name", "Microsoft.SharePOint.POwershell");
                  pipeline.Commands.Add(newcom2);

                    pipeline.Commands.AddScript(cmdArg);
                    pipeline.Commands[0].MergeMyResults(PipelineResultTypes.Error, PipelineResultTypes.Output);
                    Collection<PSObject> results = pipeline.Invoke();
                    var error = pipeline.Error.ReadToEnd();
                    runspace.Close();

电源外壳

$site = New-Object Microsoft.SharePoint.SPSite("http://pc/websites/Test4/")
$web = $site.OpenWeb()
$list = $web.Lists["GroupsList - ListInstance1"]
$listitem = $list.Items.GetItemByID(3)

如果我从 PS 执行应用程序就没有问题。(相同的用户上下文)

用户是会员WSS_ADMIN_WPG

4

1 回答 1

1

SharePoint 不适用于 .Net 4.0。PowerShell 与 .Net 3.5 一起运行,这就是它与 PS 一起使用的原因。

您应该切换回 .Net 3.5 SP1。

此外,请务必将您的项目设置为不使用 X86 编译设置运行。

将其设置为 AnyCPU 或 x64。

于 2012-06-27T08:20:50.720 回答