2012-06-27 47 views
1

你好我试图从powershell访问一个共享点列表。 powershell脚本从c#应用程序执行。从c#应用程序从Powershell脚本访问sharepoint

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

异常调用 “.ctor” 与 “1” 的说法(S):“Web应用程序 在http://pc/websites/Test4/找不到。确认您有 输入的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(); 

Powershell的

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

如果我从PS执行应用程序没有proble米(同一用户上下文)

用户WSS_ADMIN_WPG

回答

1

的SharePoint的成员不与.net 4.0。 PowerShell使用.Net 3.5运行,这就是为什么它可以与PS协同工作。

您应该切换回.Net 3.5 SP1。

另外,一定要将您的项目设置为不使用X86编译设置运行。

将其设置为AnyCPU或x64。

+0

我将Framework更改为3.5,并将Target CPU设置为x64,但未成功。我不认为这是造成麻烦的框架,因为共享点操作在powershell中? ... – HW90

+0

尝试添加脚本'$ farm = Get-Farm'并检查它是否正确加载。 –

+0

我是你的意思是$ farm = Get-SPFarm?如果我只是在ps脚本中执行它,它就可以工作。如果我从c#启动脚本,我会遇到以下故障:术语'Get-SPFarm'不被识别为cmdlet,函数,脚本文件或可操作程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。 – HW90

相关问题