テキスト ファイルから取得した Powershell コマンドを正常に実行する .net アプリケーションがありますが、より複雑で if 条件を含むものを試してみました。スクリプトは PS コンソールから正しく動作しますが、.NET では、スクリプトの文字列を渡す方法しか知りません。ファイルを読み取った後、vblf などの余分なものが追加され、それを取り出しても動作しません。 . これは可能ですか?
.NET ランタイム エラー: サーバーは要求を処理できませんでした。---> 「False」という用語は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前のスペルを確認するか、パスが含まれている場合は、パスが正しいことを確認してから再試行してください。
.NET コード:
'Grab Powershell script from text (.ps1) file
strScript = File.ReadAllText(ScriptFileName)
'inject the arguments into the script
strScript = InsertArguments(strScript, Arguments)
'Open the runspace and create a pipeline if it's not already open
If psRunspace.RunspaceStateInfo.State = RunspaceState.BeforeOpen Then
psRunspace.Open()
End If
Dim MyPipeline As Pipeline = psRunspace.CreatePipeline()
MyPipeline.Commands.AddScript(strScript)
Dim psResults As Collection(Of PSObject) = MyPipeline.Invoke()
ps1 ファイルに保存されている Powershell Script :
new-mailbox -name $argument1 -DisplayName $argument1 -UserPrincipalName $argument2 Room -DomainController $argument5
if ($argument4 -eq "False") {
Set-CalendarProcessing $argument1 -BookingWindowInDays 400 -DeleteSubject $false -AutomateProcessing autoaccept -AllBookInPolicy $false -BookInPolicy $argument3 -DomainController $argument5
} else {
Set-CalendarProcessing $argument1 -BookingWindowInDays 400 -DeleteSubject $false -AutomateProcessing autoaccept -AllBookInPolicy $true -DomainController $argument5
}
このスクリプトが読み込まれると、次の部分文字列が引き込まれstrScript
ます。
-Room -DomainController mcexdct1" & vbLf & "if (False -eq "False") {"