背景:
我正在为SharePoint组件编写安装程序。除了把软件放到目标机器上,我还想正确地配置它。SharePoint(特别是2010)通过PowerShell公开其管理功能。因此,我编写了一个C#自定义操作来调用一系列命令,如下所示:
Runspace runSpace = RunspaceFactory.CreateRunspace();
runSpace.Open();
Pipeline pipeline = runSpace.CreatePipeline();
Command addSnapin = new Command("Add-PSSnapin");
addSnapin.Parameters.Add("Name", "Microsoft.SharePoint.Powershell");
pipeline.Commands.Add(addSnapin);
pipeline.Invoke();
Command getSearchApp = new Command("Get-SPEnterpriseSearchServiceApplication");
pipeline = runSpace.CreatePipeline();
pipeline.Commands.Add(getSearchApp);
Object searchApp = pipeline.Invoke().First().BaseObject;
/* pass searchApp to other PS cmdlets */
问题:
Add-PSSnapin
命令(据我所知,它成功了)。
为什么PS找不到函数,当相同的命令序列在PS控制台中工作时,以及在我的测试程序中运行时?
这个过程有没有更简单的方法?WiX似乎不太支持复杂的PS定制操作(虽然我的操作不是很复杂,但它不是一行程序)。