How to run a PowerShell script
如何运行PowerShell脚本?
- 我有一个名为myscript.ps1的脚本
- 我安装了所有必要的框架
- 我设置了执行策略
- 我已按照此msdn帮助页上的说明操作我试着这样运行它:powershell.exe 'C:\my_path\yada_yada
un_import_script.ps1'(有或无--noexit)
除了输出文件名外,它什么也不返回。
没有错误,没有消息,什么都没有。哦,当我添加-noexit时,同样的事情发生了,但是我仍然在PowerShell中,必须手动退出。
.ps1文件应该运行一个程序,并根据该程序的输出返回错误级别。但我肯定我还没到那里。
我做错什么了?
- 启动powershell,就像启动cmd一样。现在,您可以(在PowerShell窗口中)以任何可执行文件的形式执行myscript.ps1脚本,即.\myscript.ps1。
启动Windows PowerShell,等待ps命令提示出现
导航到脚本所在的目录
1
| PS> cd C:\my_path\yada_yada\ (enter) |
执行脚本:
1 2
| PS> .
un_import_script.ps1 (enter) |
我错过了什么??
或者:您可以从cmd.exe运行PowerShell脚本,如下所示:
1 2
| powershell -noexit"&""C:\my_path\yada_yada
un_import_script.ps1""" (enter) |
根据这篇博文
或者您甚至可以从您的C应用程序运行PowerShell脚本:-)
从C应用程序异步执行PowerShell脚本
- 这确实有效,但我需要在批处理文件中执行此操作。显然,我调用powershell.exe的方式,然后脚本文件就被搞砸了。你知道如何修改它吗?
- 你的博客文章链接做到了。我不得不使用powershell -noexit"&"C:\yada_yada
un_import_script.ps1"(注意这三个双引号),我不太明白为什么,但在这一点上,我不太在乎:)非常感谢!
- "&到底做了什么?
- 根据technet.microsoft.com/en-us/library/ee176949.aspx,"&;"用于"如果您确实要执行该字符串值(即,如果要运行路径用双引号括起来的脚本),则需要在路径前面加上调用运算符(和号)。"
- 如果路径和文件名中没有空格,但在其周围加引号,则只需使用命令powershell c:\mypath\yadayada\myimportantscript.ps1。PowerShell将尝试将参数解释为一组PowerShell命令。
- @马克:或者只需右键单击文件并选择"使用PowerShell执行"。至少在Windows7下是可行的。
- 否决了不回答如何从批处理文件执行,也不清楚如何在单个命令中执行。一般不足以成为一个好答案。
- 在我为新创建的未签名脚本跳过PowerShell的默认ExecutionPolicy之前,这些都不起作用。此外,这需要以管理员身份重新启动PowerShell。完全同意@lukepuplett的说法-让最简单的用例花费20分钟的谷歌搜索和徒劳的工作是非常明智的。以及错误信息!显然这些人在IBM工作…在70年代。
- 如下面的注释所述,必须绕过执行策略。这里没有讨论的项目之一是如何从传递参数的命令行运行PowerShell脚本。为此:键入powershell -executionpolicy bypass".\myscript.ps1 yadayadayada"。
- ?有500多人从未听说过爱虫-iloveyou.vbs
如果您在PowerShell 2.0上,请使用PowerShell.exe的-file参数从其他环境(如cmd.exe)调用脚本,例如:
1 2
| Powershell.exe -File C:\my_path\yada_yada
un_import_script.ps1 |
- 有没有办法向这样的调用添加参数?
- 您应该能够在脚本文件路径之后跟踪参数。从powershell.exe用法-[-file]
- "无法加载,因为在此系统上禁用了脚本的执行。有关详细信息,请参阅"获取有关签名的帮助"。
- 如果尚未在系统上启用PowerShell脚本执行,请添加参数-ExecutionPolicy Bypass
- 根据我的经验,这也适用于PowerShell 1.0(Windows 2012 Server)
如果要在不修改默认脚本执行策略的情况下运行脚本,则可以在启动Windows PowerShell时使用旁路开关。
1
| powershell [-noexit] -executionpolicy bypass -File <Filename> |
Type:
powershell -executionpolicy bypass -File .\Test.ps1
注意:这里Test.ps1是PowerShell脚本。
- 如果当前工作目录包含test.ps1,则应在PowerShell中以powershell -executionpolicy bypass -File .\Test.ps1的形式执行此操作。
我也遇到过同样的问题,我尝试过…最后我用了:
1
| powershell.exe -noexit"& 'c:\Data\ScheduledScripts\ShutdownVM.ps1'" |
把这行放到一个批处理文件中,就可以了。
如果您只有PowerShell 1.0,那么这似乎足够成功:
1
| powershell -command - < c:\mypath\myscript.ps1 |
它将脚本文件传输到PowerShell命令行。
一个简单的方法是使用PowerShellISE,打开脚本,运行并调用脚本,函数…
相当容易。右键单击Windows中的.ps1文件,然后在Shell菜单中单击使用PowerShell运行。
- 这样可以快速运行脚本,而不必使用执行策略启用脚本的执行。谢谢!
- 这就是我要找的,谢谢!
使用命令(BAT)文件:
1 2 3 4 5 6 7 8 9
| @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 |
如果需要以管理员身份运行:
创建指向命令提示的快捷方式(我将其命名为行政命令提示)
打开快捷方式的属性并转到"兼容性"选项卡。
在"特权级别"部分下,确保选中"以管理员身份运行此程序"旁边的复选框。
如果您的脚本是以.ps1扩展名命名的,并且您在PowerShell窗口中,那么您只需运行./myscript.ps1(假设文件在您的工作目录中)。
不管怎样,在使用PowerShell 5.1版本的Windows10上,这对我来说都是真的,而且我认为我没有做任何事情使它成为可能。
- 这是如何回答这个问题的?
- 它绝对回答了一个问题:如何运行PowerShell脚本?答:启动PowerShell控制台,然后执行脚本。容易的。简单。也适用于Linux。
- 这绝对回答了这个问题,也正是我想要的。由于myscript.ps1不起作用,抛出了一个错误,但由于./正在执行。
如果要使用Windows任务计划程序运行PowerShell脚本,请执行以下步骤:
创建任务
将Program/Script设为Powershell.exe。
将Arguments设为-File"C:\xxx.ps1"。
另一个答案是,如何使用Windows任务计划程序自动执行PowerShell脚本?.
在文件名前面使用-File参数。引号使PowerShell认为它是一个命令字符串。