からPowerShellスクリプトファイル(example.ps1)を呼び出すには\ localwindows .ps1 'は、コマンドレット、関数、スクリプトファイル、または実行可能なプログラムの名前として認識されません。は、私は以下のコードを使ってC#からスクリプトlocalwindows.ps1を実行しようとしたC#
だから私は、次のことを試してみました:
PSCredential credential = new PSCredential(userName, securePassword);
WSManConnectionInfo connectionInfo = new WSManConnectionInfo(false, "machineName", 5985, "/wsman", shellUri, credential);
using (Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo))
{
runspace.Open();
using (PowerShell powershell = PowerShell.Create())
{
powershell.Runspace = runspace;
PSCommand new1 = new PSCommand();
String machinename = "machinename";
String file = "C:\\localwindows.ps1";
new1.AddCommand("Invoke-Command");
new1.AddParameter("computername", machinename);
new1.AddParameter("filepath", file);
powershell.Commands = new1;
Console.WriteLine(powershell.Commands.ToString());
Collection<PSObject> results = powershell.Invoke();
}
私はエラーを取得しています:「パス 『C:\のlocalwindows.ps1』が見つかりません。それが存在しないため」
ローカルマシンのpowershellの 'Invoke-Command -ComputerName "machineName" -filepath C:\ localwindows.ps1 "コマンドを使用して、リモートマシンに新しいアカウントを作成しました。
C#からlocalwindows.ps1スクリプトを呼び出す方法は? 'Invoke-Command -ComputerName "machineName" -filepath C:\ localwindows.ps1'コマンドをC#で実行する方法?
スクリプトlocalwindows.ps1は
$comp = [adsi]“WinNT://machinename,computer”
$user = $comp.Create(“User”, "account3")
$user.SetPassword(“change,password.10")
$user.SetInfo()
私はケースpipeline.Commands.AddScript(System.IO.File.ReadAllText(file));を試しました。エラーが発生しました: '予期しないトークン' WinNT://machineName 'in式またはステートメント。' 同じスクリプトは、invoke-commandを使用してローカルユーザーアカウントを作成します。 私は解決策を試しました - pipeline.Commands.AddScript(System.IO.File.ReadAllText( "。" + file)); プログラムはファイルを見つけることができませんでした。 –
私は試しました - new1.AddParameter( "Scriptblock"、 "{。" + file + "}"); エラーが発生しました - 'パラメータ' ScriptBlock 'をバインドできません。タイプ "System.String"の "{C:¥localwindows.ps1}"値を "System.Management.Automation.ScriptBlock"に変換できません。 –
更新された回答を参照してください。あなたの問題の要点は、スクリプトがローカルコンピュータの 'c:\ localwindows.ps1'にないということです。 –