提问人:Pekka 提问时间:1/10/2010 最后编辑:Peter MortensenPekka 更新时间:7/28/2022 访问量:2756454
如何运行 PowerShell 脚本
How to run a PowerShell script
问:
如何运行 PowerShell 脚本?
- 我有一个名为myscript.ps1的脚本
- 我已经安装了所有必要的框架
- 我设置了那个执行策略的东西
- 我已经按照此MSDN帮助页面上的说明进行操作,并尝试像这样运行它:(有或没有
powershell.exe 'C:\my_path\yada_yada\run_import_script.ps1'
--noexit
)
除了输出文件名外,它不返回任何内容。
没有错误,没有消息,什么都没有。哦,当我添加时,也会发生同样的事情,但我仍保留在PowerShell中,必须手动退出。-noexit
.ps1 文件应该运行一个程序,并返回取决于该程序输出的错误级别。但我很确定我甚至还没有到达那里。
我做错了什么?
答:
先决条件:
- 需要能够以管理员身份运行 PowerShell
- 需要将 PowerShell 执行策略设置为宽松值,或者能够绕过它
步骤:
以管理员身份启动 Windows PowerShell,然后等待提示出现
PS>
在 PowerShell 中导航到脚本所在的目录:
PS> cd C:\my_path\yada_yada\ (enter)
执行脚本:
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 脚本。
评论
powershell.exe
powershell -noexit "& "C:\yada_yada\run_import_script.ps1"
"&
powershell c:\mypath\yadayada\myimportantscript.ps1
如果使用的是 PowerShell 2.0,请使用 PowerShell.exe 的参数从另一个环境(如 cmd.exe)调用脚本。例如:-File
Powershell.exe -File C:\my_path\yada_yada\run_import_script.ps1
评论
-ExecutionPolicy Bypass
我遇到了同样的问题,我试过了......最后我用了:
powershell.exe -noexit "& 'c:\Data\ScheduledScripts\ShutdownVM.ps1'"
并将这一行放在批处理文件中,这就可以了。
如果您只有 PowerShell 1.0,这似乎可以很好地解决问题:
powershell -command - < c:\mypath\myscript.ps1
它将脚本文件通过管道传递到 PowerShell 命令行。
评论
如果要在不修改默认脚本执行策略的情况下运行脚本,则可以在启动 Windows PowerShell 时使用旁路开关。
powershell [-noexit] -executionpolicy bypass -File <Filename>
评论
-nologo
给出脚本的路径,即通过cmd设置的路径:
$> . c:\program file\prog.ps1
运行 PowerShell 的入口点函数:
例如
$> add or entry_func or main
评论
>$ . 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.
使用 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
如果需要以管理员身份运行:
- 制作一个指向命令提示符的快捷方式(我将其命名为 管理命令提示符)
- 打开快捷方式的属性,然后转到“兼容性”选项卡
- 在“权限级别”部分下,确保选中“以管理员身份运行此程序”旁边的复选框
类型:
powershell -executionpolicy bypass -File .\Test.ps1
注意:下面是 PowerShell 脚本。Test.ps1
评论
powershell -executionpolicy bypass -File .\Test.ps1
很简单。右键单击 Windows 中的 .ps1 文件,然后在 shell 菜单中单击“使用 PowerShell 运行”。
评论
如果脚本以扩展名命名,并且你位于 PowerShell 窗口中,则只需运行(假设文件位于工作目录中)。.ps1
./myscript.ps1
无论如何,在带有 PowerShell 版本 10 的 Windows 5.1 上对我来说都是如此,我认为我没有做任何事情来使它成为可能。
评论
myscript.ps1
./
一种简单的方法是使用 PowerShell ISE、打开脚本、运行和调用脚本、函数......
如果要使用 Windows 任务计划程序运行 PowerShell 脚本,请按照以下步骤操作:
创建任务
设置为
Program/Script
Powershell.exe
设置为
Arguments
-File "C:\xxx.ps1"
它来自另一个答案,如何使用 Windows 任务计划程序自动执行 PowerShell 脚本?。
在文件名前面使用参数。引号使 PowerShell 认为它是一串命令。-File
- 在管理员模式下打开 PowerShell
- 跑:
set-executionpolicy unrestricted
- 打开常规 PowerShell 窗口并运行脚本。
我通过错误消息中给出的链接找到了此解决方案: 关于执行策略
请确保在完成后运行,否则您将面临安全风险。set-ExecutionPolicy default
你可以像这样从 cmd 运行:
type "script_path" | powershell.exe -c -
使用适当的执行策略,您应该能够直接调用该文件,Windows 会将其与 PowerShell 相关联
C:\my_path\yada_yada\run_import_script.ps1
这在论点上并不那么好。你的问题的真正答案是你错过了说“执行这个”&
powershell.exe '& C:\my_path\yada_yada\run_import_script.ps1'
我刚刚找到了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'"
评论
powershell
cmd
myscript.ps1
.\myscript.ps1