相关疑难解决方法(0)

从c#运行Powershell脚本

我正在尝试从C#代码运行PowerShell脚本,但我遇到了一些(可能是环境)问题:

在我尝试运行它的机器上,会发生以下情况:

  1. PowerShell以Admin身份启动并加载
  2. PowerShell窗口立即关闭(显然)没有错误

笔记:

  • 该脚本有效.当我从ISE运行它时,它运行没有错误.
  • 如果我右键单击脚本并选择Run with PowerShell,即使我没有在脚本中更改它,我也会收到执行策略错误.

Set-ExecutionPolicy:Windows PowerShell已成功更新执行策略,但该设置被更具体范围内定义的策略覆盖.由于覆盖,您的shell将保留其当前有效的RemoteSigned执行策略.键入"Get-ExecutionPolicy -List"以查看执行策略设置.有关详细信息,请参阅"Get-Help Set-ExecutionPolicy".在行:1 char:46 + if((Get-ExecutionPolicy)-ne'AllSigned'){Set-ExecutionPolicy -Scope Process ... + ~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~ + CategoryInfo:PermissionDenied :( :) [Set-ExecutionPolicy],SecurityException + FullyQualifiedErrorId:ExecutionPolicyOverride,Microsoft.PowerShell.Commands.SetExecutionPolicyCommand

  • Get-ExecutionPolicy -List

         Scope                ExecutionPolicy
         -----                ---------------
     MachinePolicy              Unrestricted
        UserPolicy                 Undefined
           Process                    Bypass
       CurrentUser              Unrestricted
      LocalMachine              Unrestricted
    
    Run Code Online (Sandbox Code Playgroud)
  • 我认为这是环境因素:

    • 几天前它运行良好
    • 它在其他计算机上运行良好

这是我用来调用脚本的代码:

if (File.Exists("Start.ps1"))
{
    string strCmdText = Path.Combine(Directory.GetCurrentDirectory(), "Start.ps1");

    var process = System.Diagnostics.Process.Start(@"C:\windows\system32\windowspowershell\v1.0\powershell.exe ", strCmdText);
    process.WaitForExit();
}
Run Code Online (Sandbox Code Playgroud)

脚本本身是无关紧要的,因为我已将其更改为简单

Write-Host "Hello"
$d=Read-Host
Run Code Online (Sandbox Code Playgroud)

我有同样的问题.

c# powershell

9
推荐指数
1
解决办法
1万
查看次数

使用命令行中的完整路径和参数运行 powershell 命令

我有一个位于Program Files文件夹中并接受参数的脚本:verbose从其restart 文件夹运行它效果很好:

powershell ./<file.ps1> -verbose:$True -restart
Run Code Online (Sandbox Code Playgroud)

尝试使用完整路径运行它是我遇到问题的地方:

powershell & "C:\Program Files\Folder\<file.ps1> -verbose:$True -restart"
Run Code Online (Sandbox Code Playgroud)

上面的命令不运行脚本;相反,它会打开 PS 命令提示符,退出时会在记事本中打开脚本。
我还尝试将每个变量放在单独的引号中,但这效果不佳。

我找到了使用progra~1代替的解决方法Program Files,但我想以正确的方式解决问题。

我缺少什么?

powershell command-line command-prompt

8
推荐指数
1
解决办法
3万
查看次数

标签 统计

powershell ×2

c# ×1

command-line ×1

command-prompt ×1