【问题标题】:How to run a PowerShell script如何运行 PowerShell 脚本
【发布时间】:2011-01-03 08:38:12
【问题描述】:

如何运行 PowerShell 脚本?

  • 我有一个名为 myscript.ps1 的脚本
  • 我已安装所有必要的框架
  • 我设置了execution policy 的东西
  • 我已按照this MSDN help page 上的说明进行操作 并试图像这样运行它: powershell.exe 'C:\my_path\yada_yada\run_import_script.ps1'(有或没有--noexit

除了输出文件名外,什么都不返回。

没有错误,没有消息,什么都没有。哦,当我添加-noexit 时,也会发生同样的事情,但我仍然在 PowerShell 中,必须手动退出。

.ps1 文件应该运行一个程序并根据该程序的输出返回错误级别。但我很确定我还没有到达那里。

我做错了什么?

【问题讨论】:

  • 启动powershell,就像您启动cmd一样。现在您可以将myscript.ps1 脚本作为其中的任何可执行文件执行(在powershell 窗口中),即.\myscript.ps1

标签: windows powershell scripting


【解决方案1】:
  1. 打开 Power-shell
  2. 移动 .ps1 文件可用的文件夹 前任。 cd c:\users\
  3. 现在输入您的 powershell 文件名 ex.testfile.ps1
  4. 按 Enter 键

这应该会执行您的简单 powershell 脚本。

【讨论】:

  • 这只是重复所有现有的答案。
【解决方案2】:

使用适当的执行策略,您应该能够直接调用该文件,Windows 会将其与 PowerShell 关联

C:\my_path\yada_yada\run_import_script.ps1

这对论点没有那么好。你的问题的真正答案是你错过了& 说“执行这个”

powershell.exe '& C:\my_path\yada_yada\run_import_script.ps1'

【讨论】:

    【解决方案3】:

    我有一个非常简单的答案:

    1. 以管理员模式打开 PowerShell
    2. 运行:set-executionpolicy unrestricted
    3. 打开常规 PowerShell 窗口并运行您的脚本。

    我在错误消息中提供的链接之后找到了这个解决方案: About Execution Policies

    编辑:确保在完成后运行set-ExecutionPolicy default,否则您将面临安全风险(感谢匿名用户)。

    【讨论】:

    • 完成后确保运行set-ExecutionPolicy default,否则您将面临安全风险。
    【解决方案4】:

    你可以像这样从 cmd 运行:

    type "script_path" | powershell.exe -c -
    

    【讨论】:

      【解决方案5】:

      如果您使用的是 PowerShell 2.0,请使用 PowerShell.exe 的 -File 参数从另一个环境(如 cmd.exe)调用脚本。例如:

      Powershell.exe -File C:\my_path\yada_yada\run_import_script.ps1
      

      【讨论】:

      • 有没有办法为这样的调用添加参数?
      • 您应该能够在脚本文件路径之后跟踪 args。从 PowerShell.exe 使用 - [-File ]
      • "无法加载,因为在此系统上禁用了脚本的执行。有关详细信息,请参阅"get-help about_signing"。"
      • 如果您尚未在系统上启用 PowerShell 脚本执行,请添加参数 -ExecutionPolicy Bypass
      • 仅供参考,根据我的经验,这也适用于 PowerShell 1.0(Windows 2012 Server)
      【解决方案6】:
      1. 启动 Windows PowerShell,然后等待 PS 命令提示符出现
      2. 导航到脚本所在的目录

        PS> cd C:\my_path\yada_yada\ (enter)
        
      3. 执行脚本:

        PS> .\run_import_script.ps1 (enter)
        

      我错过了什么??

      或者:您可以像这样从cmd.exe 运行 PowerShell 脚本:

      powershell -noexit "& ""C:\my_path\yada_yada\run_import_script.ps1""" (enter)
      

      据此blog post here

      或者您甚至可以从 C# 应用程序运行 PowerShell 脚本 :-)

      Asynchronously execute PowerShell scripts from your C# application

      【讨论】:

      • 你的博客文章链接做到了。我必须使用powershell -noexit "& "C:\yada_yada\run_import_script.ps1"(注意三个双引号)我真的不明白为什么,但在这一点上,我真的不在乎:)非常感谢!
      • "& 到底是做什么的?
      • 根据technet.microsoft.com/en-us/library/ee176949.aspx,'&' 表示“如果你真的想执行那个字符串值(也就是说,如果你想运行路径用双引号括起来的脚本)你需要在路径前加上 Call 运算符(& 符号)。”
      • 在我为新创建的未签名脚本绕过 powershell 的默认执行策略之前,这些都不适合我。除其他外,这需要以管理员身份重新启动 powershell。完全同意@LukePuplett - 让最简单的用例花 20 分钟的时间在谷歌上搜索和摸索真是太棒了。和错误信息!显然这些人在 70 年代在 IBM 工作过。
      • 正如下面评论中所述,必须绕过执行策略。这里没有讨论的项目之一是如何从传递参数的命令行运行 powershell 脚本。为此:输入powershell -executionpolicy bypass ".\myscript.ps1 yadayadayada"
      【解决方案7】:

      在文件名前使用-File 参数。引号使 PowerShell 认为它是一串命令。

      【讨论】:

      • 这么多年过去了,我仍然看不到运行命令的答案,就像从服务中的第三个重试选项一样,在不加载 PS $ 的情况下使用这样的脚本启动服务profile: 'powershell - 命令'Start-Service -Name '服务名称' -ErrorAction Continue -Verbose'
      【解决方案8】:

      如果您想使用 Windows 任务计划程序运行 PowerShell 脚本,请按照以下步骤操作:

      1. 创建任务

      2. Program/Script设置为Powershell.exe

      3. Arguments设置为-File "C:\xxx.ps1"

      来自另一个答案,How do I execute a PowerShell script automatically using Windows task scheduler?

      【讨论】:

        【解决方案9】:

        一个简单的方法是使用PowerShell ISE,打开脚本,运行并调用你的脚本,函数...

        【讨论】:

          【解决方案10】:

          如果您的脚本以 .ps1 扩展名命名,并且您在 PowerShell 窗口中,则只需运行 ./myscript.ps1(假设文件在您的工作目录中)。

          无论如何,在带有 PowerShell 版本 5.1 的 Windows 10 上,这对我来说是正确的,我认为我没有做任何事情来使它成为可能。

          【讨论】:

          • 这如何回答这个问题?
          • 它绝对回答了这个问题:如何运行 powershell 脚本?答:启动powershell控制台,然后执行脚本。简单。简单的。也适用于 Linux。
          • 这绝对回答了这个问题,这正是我想要的。因为myscript.ps1 不起作用,抛出了一个错误,但是./ 它正在执行。
          【解决方案11】:

          很简单。在 Windows 中右键单击 .ps1 文件,然后在 shell 菜单中单击 Run with PowerShell

          【讨论】:

          • 这可以快速运行脚本,而无需使用执行策略启用脚本的执行。谢谢!
          【解决方案12】:

          类型:

          powershell -executionpolicy bypass -File .\Test.ps1

          注意:这里 Test.ps1 是 PowerShell 脚本。

          【讨论】:

          • 这应该在 powershell 中以powershell -executionpolicy bypass -File .\Test.ps1 执行,假设您当前的工作目录包含 Test.ps1
          【解决方案13】:
          • 给出脚本的路径,即cmd设置的路径:

            $> . c:\program file\prog.ps1

          • 运行PowerShell的入口点函数:

            例如,$> add or entry_func or main

          【讨论】:

          • 在 cmd 提示符下运行命令:>$ . c:\program file\prog.ps1 '.' is not recognized as an internal or external command, operable program or batch file.>$ add or entry_func or main 'add' is not recognized as an internal or external command, operable program or batch file.
          【解决方案14】:

          如果您只有 PowerShell 1.0,这似乎可以很好地解决问题:

          powershell -command - < c:\mypath\myscript.ps1
          

          它将脚本文件通过管道传送到 PowerShell 命令行。

          【讨论】:

          • 安全策略不允许脚本执行时的有用技巧。
          【解决方案15】:

          我也遇到过同样的问题,试了又试……终于用上了:

          powershell.exe -noexit "& 'c:\Data\ScheduledScripts\ShutdownVM.ps1'"
          

          并将这一行放入批处理文件中,这样就可以了。

          【讨论】:

            【解决方案16】:

            使用 cmd (BAT) 文件:

            @echo off
            color 1F
            echo.
            
            C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File "PrepareEnvironment.ps1"
            
            :EOF
            echo Waiting seconds
            timeout /t 10 /nobreak > NUL
            

            如果您需要以管理员身份运行

            1. 创建一个指向命令提示符的快捷方式(我将其命名为 管理命令提示符)
            2. 打开快捷方式的属性并转到兼容性选项卡
            3. 在“权限级别”部分下,确保选中“以管理员身份运行此程序”旁边的复选框

            【讨论】:

              【解决方案17】:

              如果您想在不修改默认脚本执行策略的情况下运行脚本,可以在启动 Windows PowerShell 时使用 bypass 开关。

              powershell [-noexit] -executionpolicy bypass -File <Filename>
              

              【讨论】:

              • 另外,包括-nologo 选项以摆脱启动横幅
              猜你喜欢
              • 1970-01-01
              • 2012-11-24
              • 1970-01-01
              • 1970-01-01
              • 2014-10-11
              • 1970-01-01
              • 2012-07-31
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多