C#からpowershell
スクリプトを実行してみます。
まず、ExecutionPolicy
をUnrestricted
に設定すると、スクリプトはPowerShell ISE
から実行されます。
これはc#私のコードです:
class Program
{
private static PowerShell ps;
static void Main(string[] args)
{
ps = PowerShell.Create();
string ps1File = Path.Combine(Environment.CurrentDirectory, "script.ps1");
ExecuteScript(ps1File);
Console.ReadLine();
}
static void ExecuteScript(string script)
{
try
{
ps.AddScript(script);
Collection<PSObject> results = ps.Invoke();
Console.WriteLine("Output:");
foreach (var psObject in results)
{
Console.WriteLine(psObject);
}
Console.WriteLine("Non-terminating errors:");
foreach (ErrorRecord err in ps.Streams.Error)
{
Console.WriteLine(err.ToString());
}
}
catch (RuntimeException ex)
{
Console.WriteLine("Terminating error:");
Console.WriteLine(ex.Message);
}
}
}
そして出力は:
このシステムではスクリプトの実行が無効になっているため、ps1をロードできません。詳細については、about-Execution_Policiesの http://go.Microsoft.com/fwlink/?LinkID=13517 を参照してください。
これは、現在のユーザーが未定義のExecutionPolicy
を持っていることが原因である可能性があります。
以下を試すことができます:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
管理モードでPowerShellを開き、次のコマンドを実行します
Set-ExecutionPolicy RemoteSigned
PowerShell実行ポリシーは、デフォルトで制限付きに設定されています。 Set-ExecutionPolicyコマンドレットを使用して、PowerShell実行ポリシーを変更できます。スクリプトを実行するには、ポリシーをRemoteSignedに設定します。
PS C:> Set-ExecutionPolicy RemoteSigned以下は、PowerShellの4つの異なる実行ポリシーのリストです。
制限–スクリプトは実行できません。 AllSigned –信頼できる発行元によって署名されたスクリプトのみを実行できます。 RemoteSigned –ダウンロードしたスクリプトは、信頼できる発行元によって署名されている必要があります。無制限–すべてのWindows PowerShellスクリプトを実行できます。
windows PowerShellを管理者モードで開き、次のコマンドとその作業を実行します。
Set-ExecutionPolicy RemoteSigned
このコードをpowershellまたはcmdで実行します
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass