如何运行PowerShell脚本

Pek*_*ica 662 windows powershell scripting

如何运行PowerShell脚本?

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

除了输出文件名外,它什么都不返回.

没有错误,没有消息,没有.哦,当我添加时-noexit,同样的事情发生了,但我仍然在PowerShell中,必须手动退出.

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

我究竟做错了什么?

mar*_*c_s 694

  1. 启动Windows PowerShell,稍等片刻即可显示PS命令提示符
  2. 导航到脚本所在的目录

    PS> cd C:\my_path\yada_yada\ (enter)
    
    Run Code Online (Sandbox Code Playgroud)
  3. 执行脚本:

    PS> .\run_import_script.ps1 (enter)
    
    Run Code Online (Sandbox Code Playgroud)

我错过了什么?

或者:您可以PS像这样运行PowerShell脚本:

powershell -noexit "& ""C:\my_path\yada_yada\run_import_script.ps1""" (enter)
Run Code Online (Sandbox Code Playgroud)

根据这篇博客文章

或者您甚至可以从C#app运行Powershell脚本:-)

从C#应用程序异步执行PowerShell脚本

  • 在我为新创建的未签名脚本绕过powershell的默认执行策略之前,这些都不适合我.除此之外,还需要以管理员身份重新启动PowerShell.完全同意@LukePuplett - 使用最简单的用例需要20分钟的谷歌搜索和充实.和错误消息!显然这些人在IBM工作......在70年代. (28认同)
  • 你的博客文章链接做到了.我必须使用`powershell -noexit'和"C:\ yada_yada\run_import_script.ps1"`(注意*三*双引号)我真的不明白为什么,但在这一点上,我并不在乎: ) 非常感谢! (18认同)
  • "&"做到了什么? (15认同)
  • 根据http://technet.microsoft.com/en-us/library/ee176949.aspx,'&'代表"如果你真的想要执行该字符串值(也就是说,如果你想运行其脚本path用双引号括起来)你需要在Call路径前加上Call运算符(&符号)." (15认同)
  • 如下面的评论所述,必须绕过执行政策.这里没有讨论的其中一个项目是如何从传递参数的命令行运行powershell脚本.要做到这一点:键入`powershell -executionpolicy bypass".\ myscript.ps1 yadayadayada"` (13认同)
  • 如果您的路径和文件名中没有空格,只需使用命令`powershell c:\ mypath\yadayada\myimportantscript.ps1`但如果您在其周围加上引号,powershell将尝试将该参数解释为一系列powershell命令. (7认同)
  • @marc_s:或者只需右键单击该文件,然后选择"使用Powershell执行".至少在Windows 7下可以使用. (3认同)

Kei*_*ill 208

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

Powershell.exe -File C:\my_path\yada_yada\run_import_script.ps1
Run Code Online (Sandbox Code Playgroud)

  • 您应该能够在脚本文件路径之后跟踪args.从PowerShell.exe用法 - [-File <filePath> <args>] (10认同)
  • 有没有办法为这样的调用添加参数? (5认同)
  • 如果尚未在系统上启用PowerShell脚本执行,请添加参数`-ExecutionPolicy Bypass` (5认同)
  • 仅供参考,根据我的经验,这也适用于PowerShell 1.0(Windows 2012 Server) (4认同)

小智 169

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

powershell [-noexit] -executionpolicy bypass -File <Filename>
Run Code Online (Sandbox Code Playgroud)

  • 此外,包括`-nologo`选项以摆脱启动横幅 (9认同)

小智 66

类型:

powershell -executionpolicy bypass -File .\Test.ps1

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


Den*_*nis 28

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

powershell.exe -noexit "& 'c:\Data\ScheduledScripts\ShutdownVM.ps1'"
Run Code Online (Sandbox Code Playgroud)

并将此行放在批处理文件中,这是有效的.


And*_*dyM 22

如果你只有PowerShell 1.0,这似乎就足够了:

powershell -command - < c:\mypath\myscript.ps1
Run Code Online (Sandbox Code Playgroud)

它将脚本文件传递给PowerShell命令行.

  • 安全策略不允许脚本执行时的有用技巧. (3认同)

小智 13

满容易.右键单击Windows中的.ps1文件,然后在shell菜单中单击"使用PowerShell运行".


小智 11

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

在此输入图像描述


Kiq*_*net 10

使用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
Run Code Online (Sandbox Code Playgroud)

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

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


sol*_*ger 8

我有一个非常简单的答案:

  1. 以管理员模式打开 PowerShell
  2. 跑: set-executionpolicy unrestricted
  3. 打开常规 PowerShell 窗口并运行您的脚本。

我在作为错误消息的一部分给出的链接之后找到了这个解决方案: 关于执行策略

编辑:确保完成后运行set-ExecutionPolicy default,否则您将面临安全风险(感谢匿名用户)。


pkm*_*pkm 7

  • 给出脚本的路径,即cmd的路径设置:

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

  • 运行PowerShell的入口点功能:

    例如, $> add or entry_func or main


Eug*_*ene 7

如果要使用Windows Task Scheduler运行PowerShell脚本,请按照以下步骤操作:

  1. 创建一个任务

  2. 设置Program/ScriptPowershell.exe

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

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


rai*_*bba 6

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

无论如何,在Windows 10上使用PowerShell版本5.1,这对我来说都是如此,我认为我没有做任何事情来实现它.

  • 它完全回答了这个问题:如何运行powershell脚本?回答:启动powershell控制台,然后执行脚本.简单.简单.适用于Linux. (3认同)
  • 这完全回答了这个问题,而且正是我所寻找的.因为`myscript.ps1`不起作用,抛出一个错误,但是`.`它正在执行. (3认同)
  • 这是如何回答这个问题的? (2认同)

归档时间:

查看次数:

1663958 次

最近记录:

6 年,4 月 前