如何运行PowerShell脚本?
powershell.exe 'C:\my_path\yada_yada\run_import_script.ps1'
(有或没有--noexit
)除了输出文件名外,什么都不返回。
没有错误,没有消息,没有。哦,当我添加-noexit
时,同样的事情发生了,但我仍然在PowerShell中并且必须手动退出。
.ps1文件应该运行一个程序并返回依赖于该程序输出的错误级别。但我很确定我还没到那里。
我做错了什么?
答案 0 :(得分:655)
导航到脚本所在的目录
PS> cd C:\my_path\yada_yada\ (enter)
执行脚本:
PS> .\run_import_script.ps1 (enter)
我错过了什么?
或者:您可以像cmd.exe
那样运行PowerShell脚本:
powershell -noexit "& ""C:\my_path\yada_yada\run_import_script.ps1""" (enter)
或者您甚至可以从C#app运行Powershell脚本:-)
Asynchronously execute PowerShell scripts from your C# application
答案 1 :(得分:194)
如果您使用PowerShell 2.0,请使用PowerShell.exe的-File参数从其他环境(如cmd.exe)调用脚本,例如:
Powershell.exe -File C:\my_path\yada_yada\run_import_script.ps1
答案 2 :(得分:164)
如果要在不修改默认脚本执行策略的情况下运行脚本,则可以在启动 Windows PowerShell 时使用绕过开关。
powershell [-noexit] -executionpolicy bypass -File <Filename>
答案 3 :(得分:61)
类型:
powershell -executionpolicy bypass -File .\Test.ps1
注意:此处Test.ps1
是PowerShell脚本。
答案 4 :(得分:27)
我遇到了同样的问题,我尝试过并试过......最后我用过:
powershell.exe -noexit "& 'c:\Data\ScheduledScripts\ShutdownVM.ps1'"
并将此行放在批处理文件中,这样可行。
答案 5 :(得分:21)
如果您只有 PowerShell 1.0 ,这似乎可以很好地解决问题:
powershell -command - < c:\mypath\myscript.ps1
它将脚本文件传递给PowerShell命令行。
答案 6 :(得分:11)
非常简单。右键单击Windows中的.ps1文件,然后在shell菜单中单击使用PowerShell运行。
答案 7 :(得分:10)
一种简单的方法是使用PowerShell ISE,打开脚本,运行并调用脚本,函数......
答案 8 :(得分:9)
使用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
如果您需要以管理员身份运行:
答案 9 :(得分:7)
提供脚本的路径,即cmd:
的路径设置 $> . c:\program file\prog.ps1
运行PowerShell的入口点功能:
例如,$> add or entry_func or main
答案 10 :(得分:6)
如果您的脚本以.ps1
扩展名命名,并且您在PowerShell窗口中,则只需运行./myscript.ps1
(假设该文件位于您的工作目录中)。
无论如何,对于我来说,无论如何,在Windows 10上使用PowerShell版本5.1都是如此,我并不认为我已经做了任何事情来实现它。
答案 11 :(得分:5)
如果您想使用Windows任务计划程序运行PowerShell脚本,请按照以下步骤操作:
创建任务
将Program/Script
设为Powershell.exe
将Arguments
设为-File "C:\xxx.ps1"
这是另一个答案, How do I execute a PowerShell script automatically using Windows task scheduler? 。
答案 12 :(得分:1)
使用文件名前面的-File
参数。引号使PowerShell认为它是一串命令。
答案 13 :(得分:1)
我有一个很简单的答案,可以起作用:
set-executionpolicy unrestricted
我在错误消息中给出的链接之后找到了该解决方案: About Execution Policies
答案 14 :(得分:1)
您可以像这样从cmd运行:
type "script_path" | powershell.exe -c -