0

我最近开始使用 C# 调用 powershell 脚本,并取得了一些成功:)

$spWeb = Get-SPWeb -Identity http://127.0.0.1 
$listTemplate = [Microsoft.SharePoint.SPListTemplateType]::DocumentLibrary 
$spWeb.Lists.Add($args, "", $listTemplate) > $myDirectory

$spWeb.Lists.Add返回一个 SharePoint GUID。

问题:

我只是希望传入将写入 GUID 的目录/文件名。那怎么可能呢?

我在这里的 MSDN 论坛上发帖:http: //goo.gl/5p0oz但由于看似死胡同的线程,我继续在 stackoverflow 上进行搜索。这篇文章是通过 MSDN 响应找到的信息的累积收集。

4

1 回答 1

1

您可以尝试使用Set-Content cmdlet,就像这样。您需要将 $myFile 作为字符串传递,然后 Set-Content 将为您完成剩下的工作 -

在您的脚本中,即MyScript.ps1此处,您将拥有这段代码 -

param([string]$parameter, [string]$myFile)
try
{
    $spWeb = Get-SPWeb -Identity http://127.0.0.1 
    $listTemplate = [Microsoft.SharePoint.SPListTemplateType]::DocumentLibrary 
    $guid = $spWeb.Lists.Add($parameter, "", $listTemplate)
    $guid | Set-Content $myFile
}
catch
{
    throw ("Failed. The error was: '{0}'." -f $_ )
}

如何运行:打开 Powershell Prompt 并输入

.\MyScript.ps1 "someparam1" "D:\Output.txt"

C#位 -

private PowerShell _ps;
_ps = PowerShell.Create();

var parameter = new List<string>
                                {
                                    parameter,
                                    myFile
                                };

var sr = new StreamReader(@"C:\MyScript.ps1");
_ps.AddScript(sr.ReadToEnd()).AddParameters(parameter);
_ps.Invoke();
于 2012-06-12T15:36:36.290 回答