如何运行 PowerShell 脚本

How to run a PowerShell script

提问人:Pekka 提问时间:1/10/2010 最后编辑:Peter MortensenPekka 更新时间:7/28/2022 访问量:2756454

问:

如何运行 PowerShell 脚本?

  • 我有一个名为myscript.ps1的脚本
  • 我已经安装了所有必要的框架
  • 我设置了那个执行策略的东西
  • 我已经按照此MSDN帮助页面上的说明进行操作,并尝试像这样运行它:(有或没有powershell.exe 'C:\my_path\yada_yada\run_import_script.ps1'--noexit)

除了输出文件名外,它不返回任何内容。

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

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

我做错了什么?

Windows PowerShell 脚本

评论

9赞 parasrish 12/19/2017
像你开始的那样开始。现在,您可以在(powershell窗口中)将脚本作为任何可执行文件执行,即powershellcmdmyscript.ps1.\myscript.ps1

答:

1000赞 marc_s 1/10/2010 #1

先决条件:

  • 需要能够以管理员身份运行 PowerShell
  • 需要将 PowerShell 执行策略设置为宽松值,或者能够绕过它

步骤:

  1. 以管理员身份启动 Windows PowerShell,然后等待提示出现PS>

  2. 在 PowerShell 中导航到脚本所在的目录:

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

    PS> .\run_import_script.ps1 (enter)
    

或者:可以从命令提示符 () 运行 PowerShell 脚本,如下所示:cmd.exe

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

根据 从 cmd.exe 调用 PowerShell 脚本(或开始 |运行)由柯克·门罗 (Kirk Munro) 撰写。

或者,你甚至可以从 C# 应用程序异步运行 PowerShell 脚本

评论

0赞 Pekka 1/10/2010
这确实有效,但我需要从批处理文件中执行此操作。显然,我的调用方式和脚本文件以某种方式搞砸了。你知道如何修改它吗?powershell.exe
27赞 Pekka 1/10/2010
你的博客文章链接做到了。我必须使用(注意三个双引号)我真的不明白为什么,但在这一点上,我真的不在乎:)多谢!powershell -noexit "& "C:\yada_yada\run_import_script.ps1"
22赞 BlueRaja - Danny Pflughoeft 1/25/2012
这到底是做什么的?"&
20赞 Doug Dawson 5/29/2012
根据 technet.microsoft.com/en-us/library/ee176949.aspx,“&”表示“如果你真的想执行该字符串值(也就是说,如果你想运行路径用双引号括起来的脚本),你需要在路径前面加上 Call 运算符(与号)。
9赞 BeowulfNode42 2/10/2014
如果路径和文件名中没有空格,只需使用该命令,但如果在它周围加上引号,PowerShell 将尝试将参数解释为 powershell 命令字符串。powershell c:\mypath\yadayada\myimportantscript.ps1
1赞 Clock ZHONG 5/27/2023
哦,我的上帝!我明白为什么powershell使用的人很少,它是最难运行的脚本。
319赞 Keith Hill 1/10/2010 #2

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

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

评论

6赞 Alexander Groß 2/2/2010
有没有办法向这样的调用添加参数?
13赞 Keith Hill 2/2/2010
您应该能够在脚本文件路径之后跟踪 args。在 PowerShell 中.exe用法 - [-File <filePath> <args>]
0赞 Pavel Vlasov 10/21/2016
“无法加载,因为在此系统上禁用了脚本的执行。有关详细信息,请参阅“获取帮助about_signing”。
10赞 Keith Hill 10/22/2016
如果尚未在系统上启用 PowerShell 脚本执行,请添加参数-ExecutionPolicy Bypass
5赞 knocte 11/8/2016
仅供参考,根据我的经验,这也适用于 PowerShell 1.0 (Windows 2012 Server)
39赞 Dennis 3/8/2010 #3

我遇到了同样的问题,我试过了......最后我用了:

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

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

25赞 AndyM 7/1/2010 #4

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

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

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

评论

3赞 Aron Lorincz 8/21/2016
当安全策略不允许脚本执行时,这是有用的技巧。
232赞 Chingiz Musayev 1/31/2011 #5

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

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

评论

14赞 swdev 6/1/2016
此外,还包括摆脱启动横幅的选项-nologo
9赞 pkm 6/16/2013 #6
  • 给出脚本的路径,即通过cmd设置的路径:

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

  • 运行 PowerShell 的入口点函数:

    例如$> add or entry_func or main

评论

0赞 Suncat2000 12/10/2019
从 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.
12赞 Kiquenet 11/17/2014 #7

使用 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. 在“权限级别”部分下,确保选中“以管理员身份运行此程序”旁边的复选框
118赞 Sudheesh 2/6/2015 #8

类型:

powershell -executionpolicy bypass -File .\Test.ps1

注意:下面是 PowerShell 脚本。Test.ps1

评论

0赞 Yeow_Meng 12/3/2015
这应该在 powershell 中执行,因为假设当前工作目录包含 Test.ps1powershell -executionpolicy bypass -File .\Test.ps1
25赞 electronictonic 8/23/2016 #9

很简单。右键单击 Windows 中的 .ps1 文件,然后在 shell 菜单中单击“使用 PowerShell 运行”。

评论

0赞 b01 5/21/2017
这可以快速运行脚本,而无需使用执行策略启用脚本的执行。谢谢!
15赞 rainabba 9/7/2016 #10

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

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

评论

2赞 Peter Mortensen 3/2/2017
这如何回答这个问题?
6赞 Thufir 2/18/2018
它绝对回答了这个问题:如何运行 PowerShell 脚本?答:启动 PowerShell 控制台,然后执行脚本。容易。简单。也适用于 Linux。
6赞 Jeff 4/1/2018
这绝对回答了这个问题,这正是我想要的。因为没有工作,抛出了一个错误,但它正在执行。myscript.ps1./
0赞 71GA 11/29/2023
但是,如果脚本没有后缀怎么办?
12赞 Jose Evaristo Cepeda Barrera 11/2/2016 #11

一种简单的方法是使用 PowerShell ISE、打开脚本、运行和调用脚本、函数......

Enter image description here

12赞 Eugene 5/24/2018 #12

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

  1. 创建任务

  2. 设置为Program/ScriptPowershell.exe

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

它来自另一个答案,如何使用 Windows 任务计划程序自动执行 PowerShell 脚本?

3赞 Engineer 8/1/2018 #13

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

22赞 JovanToroman 9/18/2019 #14
  1. 在管理员模式下打开 PowerShell
  2. 跑:set-executionpolicy unrestricted
  3. 打开常规 PowerShell 窗口并运行脚本。

我通过错误消息中给出的链接找到了此解决方案: 关于执行策略

请确保在完成后运行,否则您将面临安全风险。set-ExecutionPolicy default

4赞 Wasif 8/23/2020 #15

你可以像这样从 cmd 运行:

type "script_path" | powershell.exe -c -
1赞 carrvo 1/6/2022 #16

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

C:\my_path\yada_yada\run_import_script.ps1

这在论点上并不那么好。你的问题的真正答案是你错过了说“执行这个”&

powershell.exe '& C:\my_path\yada_yada\run_import_script.ps1'
3赞 Roukmoute 3/31/2022 #17

我刚刚找到了Microsoft在右键单击脚本并单击“使用PowerShell运行”时执行的方法:ps1

"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" "-Command" "if((Get-ExecutionPolicy ) -ne 'AllSigned') { Set-ExecutionPolicy -Scope Process Bypass }; & 'C:\Users\USERNAME\Desktop\MYSCRIPT.ps1'"