如何运行PowerShell脚本

如何运行PowerShell脚本?

  • 我有个剧本叫myscript.ps
  • 我已经安装了所有必要的框架
  • 我设置了执行策略的东西
  • 我已经按照这个MSDN帮助页面我试着像这样运行它:powershell.exe 'C:\my_path\yada_yada\run_import_script.ps1'(带或不带--noexit

它不返回任何东西,除了输出文件名。

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

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

我做错了什么?

2526770 次浏览

先决条件:

  • 您需要能够以管理员身份运行PowerShell
  • 您需要将PowerShell执行策略设置为允许值或能够绕过它

步骤:

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

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

    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)

根据Kirk Munro的从cmd.exe(或开始|运行)调用PowerShell脚本

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

如果使用的是PowerShell 2.0,请使用PowerShell.exe的-File参数从其他环境调用脚本,如cmd.exe.例如:

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

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

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

把这行放在一个批处理文件中,这样就可以了。

如果你只有PowerShell 1.0,这似乎已经足够好了:

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

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

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

powershell [-noexit] -executionpolicy bypass -File <Filename>
  • 给出脚本的路径,即cmd设置的路径:

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

  • 运行PowerShell的切入点函数:

    例如,$> add or entry_func or main

使用cmd(BAT)文件:

@echo offcolor 1Fecho.
C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File "PrepareEnvironment.ps1"
:EOFecho Waiting secondstimeout /t 10 /nobreak > NUL

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

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

类型:

powershell -executionpolicy bypass -File .\Test.ps1

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

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

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

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

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

在此处输入图片描述

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

  1. 创建任务

  2. 设置Program/ScriptPowershell.exe

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

这是另一个答案,如何使用Windows任务调度程序自动执行PowerShell脚本?

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

  1. 在管理员模式下打开PowerShell
  2. 运行:set-executionpolicy unrestricted
  3. 打开常规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'

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

"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'"