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.AddSharePoint 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プロンプトを開き、これを入力します

.\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 に答える