使用“-command”参数而不是“-file”调用 Powershell 脚本
Calling a Powershell script with the "-command" parameter instead of "-file"
像这样调用powershell脚本有什么区别:
powershell.exe -file "myfile.ps1"
像这样(也有效):
powershell.exe -command "myfile.ps1"
谢谢,罗伯特
运行 powershell.exe -File
将 return 脚本设置的退出代码,而 运行 powershell.exe -Command
将 return 1 如果脚本以非零退出代码终止,否则为 0。
C:\><b>type "C:\path\to\test.ps1"</b>
exit 5
C:\><b>powershell.exe -command "C:\path\to\test.ps1"</b>
C:\><b>echo %errorlevel%</b>
<i>1</i>
C:\><b>powershell.exe -file "C:\path\to\test.ps1"</b>
C:\><b>echo %errorlevel%</b>
<i>5</i>
powershell.exe -file "myfile.ps1"
— 这意味着:启动 PowerShell 并在全局范围内执行文件 myfile.ps1
(文件名被认为是相对于当前目录的)。
powershell.exe -command "myfile.ps1"
— 这意味着:启动 PowerShell 并执行命令 myfile.ps1
,PowerShell 允许您通过在命令行中键入脚本文件的名称来执行脚本文件。
差异:
- 在没有点源运算符的情况下
. myfile.ps1
PowerShell 在命令解析为脚本文件时创建新范围。
- PowerShell 不会在当前目录中查找命令源。因此,如果文件
myfile.ps1
驻留在当前目录中,而当前目录不在 PATH
环境变量中,则 PowerShell 无法找到 myfile.ps1
命令。
- 如果文件
myfile.ps1
可以在当前目录之前的 PATH
环境变量中提到的任何目录中找到,那么 myfile.ps1
命令将解析到该文件而不是文件 myfile.ps1
在当前目录中。
- 您可以在您的配置文件中创建别名,例如
New-Alias myfile.ps1 DoSomethingElse
,在这种情况下,myfile.ps1
命令将被视为对该别名而不是 myfile.ps1
文件的引用。
像这样调用powershell脚本有什么区别:
powershell.exe -file "myfile.ps1"
像这样(也有效):
powershell.exe -command "myfile.ps1"
谢谢,罗伯特
运行 powershell.exe -File
将 return 脚本设置的退出代码,而 运行 powershell.exe -Command
将 return 1 如果脚本以非零退出代码终止,否则为 0。
C:\><b>type "C:\path\to\test.ps1"</b>
exit 5
C:\><b>powershell.exe -command "C:\path\to\test.ps1"</b>
C:\><b>echo %errorlevel%</b>
<i>1</i>
C:\><b>powershell.exe -file "C:\path\to\test.ps1"</b>
C:\><b>echo %errorlevel%</b>
<i>5</i>
powershell.exe -file "myfile.ps1"
— 这意味着:启动 PowerShell 并在全局范围内执行文件 myfile.ps1
(文件名被认为是相对于当前目录的)。
powershell.exe -command "myfile.ps1"
— 这意味着:启动 PowerShell 并执行命令 myfile.ps1
,PowerShell 允许您通过在命令行中键入脚本文件的名称来执行脚本文件。
差异:
- 在没有点源运算符的情况下
. myfile.ps1
PowerShell 在命令解析为脚本文件时创建新范围。 - PowerShell 不会在当前目录中查找命令源。因此,如果文件
myfile.ps1
驻留在当前目录中,而当前目录不在PATH
环境变量中,则 PowerShell 无法找到myfile.ps1
命令。 - 如果文件
myfile.ps1
可以在当前目录之前的PATH
环境变量中提到的任何目录中找到,那么myfile.ps1
命令将解析到该文件而不是文件myfile.ps1
在当前目录中。 - 您可以在您的配置文件中创建别名,例如
New-Alias myfile.ps1 DoSomethingElse
,在这种情况下,myfile.ps1
命令将被视为对该别名而不是myfile.ps1
文件的引用。