我试图运行PowerShell
脚本使用C#
使用this link作为参考。
到目前为止我有:
try
{
using (PowerShell PowerShellInstance = PowerShell.Create())
{
PowerShellInstance.AddCommand(scriptPath);
var PSOutput = PowerShellInstance.Invoke();
if (PowerShellInstance.Streams.Error.Count > 0)
{
foreach (var line in PowerShellInstance.Streams.Error)
{
Console.WriteLine(line);
}
return false;
}
else
{
return true;
}
}
}
catch (Exception ex)
{
return false;
}
这使抛出一个异常:
“AuthorizationManager检查失败。”
内部异常:,提示用户的命令失败,因为 主机程序或命令 类型不支持用户交互。主机试图通过以下消息尝试 请求确认:仅运行您信任的脚本 。虽然来自互联网的脚本可能很有用,但此脚本 可能会损害您的计算机。如果您信任此脚本,请使用 Unblock-File cmdlet来允许脚本在没有此警告 消息的情况下运行。你想运行C:\ PowerShellScripts \ MyScript.ps1吗?
所以看着Exception
我可以看到它是要求我确认脚本,但没有用户交互的窗口,因此是例外。
所以我开始寻找如何停止的确认文字,发现Powershell New-Item: How to Accept Confirmation Automatically
但即使加:
PowerShellInstance.AddScript("$ConfirmPreference = \"None\"");
PowerShellInstance.Invoke();
执行我的脚本没有工作之前。那么是否有一种方法可以使用C#
为我的PowerShell实例设置$ConfirmPreference = "None"
?
我的执行策略已经是'Unrestricted'。我认为问题更多的是因为'ConfirmationPreference'更多的信息发现[Here](http://blogs.msdn.com/b/powershell/archive/2006/12/15/confirmpreference.aspx) – user1
这些文件被阻止“虽然和手动通过和解除他们的工作。我也会自动化这个。谢谢! – user1