Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何设置$ConfirmPreference=";无”;以PowerShell为例?_C#_Powershell - Fatal编程技术网

C# 如何设置$ConfirmPreference=";无”;以PowerShell为例?

C# 如何设置$ConfirmPreference=";无”;以PowerShell为例?,c#,powershell,C#,Powershell,我正在尝试使用C#作为参考运行PowerShell脚本 到目前为止,我得到了: try { using (PowerShell PowerShellInstance = PowerShell.Create()) { PowerShellInstance.AddCommand(scriptPath); var PSOutput = PowerShellInstance

我正在尝试使用
C#
作为参考运行
PowerShell
脚本

到目前为止,我得到了:

  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;
   }
这会不断引发异常:

“授权管理器检查失败。”

内部异常:提示用户的命令失败,因为 主机程序或命令 类型不支持用户交互。主机正在尝试 请求确认,并显示以下消息:仅运行 你信任我。虽然来自internet的脚本可能很有用,但此脚本 可能会危害您的计算机。如果您信任此脚本,请使用 Unblock File cmdlet允许脚本在没有此警告的情况下运行 消息是否要运行C:\PowerShellScripts\MyScript.ps1

因此,查看
异常
我可以看到,它要求我确认脚本,但没有用户交互的窗口,因此出现了异常

因此,我开始研究如何停止确认文本,并发现

但甚至还加上:

PowerShellInstance.AddScript("$ConfirmPreference = \"None\"");
PowerShellInstance.Invoke();

在执行之前,我的脚本不起作用。那么,是否有一种方法可以使用
C
为我的PowerShell实例设置
$ConfirmPreference=“None”

我认为这与执行策略有关。您可以使用Cmdlet
Get ExecutionPolicy
查询执行策略。你可以:

  • 将执行策略更改为(例如):“不受限制” 使用
    设置执行策略不受限制
  • 通过运行powershell.exe-ExecutionPolicy Bypass C:\PowerShellScripts\MyScript.ps1运行脚本
  • 使用Cmdlet取消阻止文件C:\PowerShellScripts\MyScript.ps1取消阻止脚本

  • 我认为这与执行政策有关。您可以使用Cmdlet
    Get ExecutionPolicy
    查询执行策略。你可以:

  • 将执行策略更改为(例如):“不受限制” 使用
    设置执行策略不受限制
  • 通过运行powershell.exe-ExecutionPolicy Bypass C:\PowerShellScripts\MyScript.ps1运行脚本
  • 使用Cmdlet取消阻止文件C:\PowerShellScripts\MyScript.ps1取消阻止脚本

  • 我认为这与执行政策有关。您可以使用Cmdlet
    Get ExecutionPolicy
    查询执行策略。你可以:

  • 将执行策略更改为(例如):“不受限制” 使用
    设置执行策略不受限制
  • 通过运行powershell.exe-ExecutionPolicy Bypass C:\PowerShellScripts\MyScript.ps1运行脚本
  • 使用Cmdlet取消阻止文件C:\PowerShellScripts\MyScript.ps1取消阻止脚本

  • 我认为这与执行政策有关。您可以使用Cmdlet
    Get ExecutionPolicy
    查询执行策略。你可以:

  • 将执行策略更改为(例如):“不受限制” 使用
    设置执行策略不受限制
  • 通过运行powershell.exe-ExecutionPolicy Bypass C:\PowerShellScripts\MyScript.ps1运行脚本
  • 使用Cmdlet取消阻止文件C:\PowerShellScripts\MyScript.ps1取消阻止脚本

  • 虽然接受的答案解决了这个特定问题,但设置
    $confirimpact
    首选项变量的正确方法是通过会话状态:

    var sessionState=InitialSessionState.CreateDefault();
    添加(新的SessionStateVariableEntry(“ConfirmPreference”,ConfirmImpact.None,”));
    使用(PowerShell shell=PowerShell.Create(sessionState))
    {
    //执行命令等
    }
    

    (这是针对从谷歌搜索结果来到这里的访问者)

    虽然公认的答案解决了这个特定问题,但设置
    $confirimpact
    首选项变量的正确方法是通过会话状态:

    var sessionState=InitialSessionState.CreateDefault();
    添加(新的SessionStateVariableEntry(“ConfirmPreference”,ConfirmImpact.None,”));
    使用(PowerShell shell=PowerShell.Create(sessionState))
    {
    //执行命令等
    }
    

    (这是针对从谷歌搜索结果来到这里的访问者)

    虽然公认的答案解决了这个特定问题,但设置
    $confirimpact
    首选项变量的正确方法是通过会话状态:

    var sessionState=InitialSessionState.CreateDefault();
    添加(新的SessionStateVariableEntry(“ConfirmPreference”,ConfirmImpact.None,”));
    使用(PowerShell shell=PowerShell.Create(sessionState))
    {
    //执行命令等
    }
    

    (这是针对从谷歌搜索结果来到这里的访问者)

    虽然公认的答案解决了这个特定问题,但设置
    $confirimpact
    首选项变量的正确方法是通过会话状态:

    var sessionState=InitialSessionState.CreateDefault();
    添加(新的SessionStateVariableEntry(“ConfirmPreference”,ConfirmImpact.None,”));
    使用(PowerShell shell=PowerShell.Create(sessionState))
    {
    //执行命令等
    }
    

    (这是给从谷歌搜索结果中来到这里的访问者的)

    我的执行策略已经不受限制了。我认为问题更多地在于
    确认首选项
    进一步的信息发现文件已被
    阻止
    但手动检查并解除阻止仍然有效。我还将自动执行此操作。谢谢我的执行策略已经是无限制的。我认为问题更多地在于
    确认首选项
    进一步的信息发现文件已被
    阻止
    但手动检查并解除阻止仍然有效。我还将自动执行此操作。谢谢我的执行策略已经是无限制的。我认为问题在于