从现有 PowerShell 会话中调用时,结果作为反序列化的 XML 对象(而不是实时对象)返回到父 shell。 对于其他 shell,结果以字符串的形式返回。
指定运行 PowerShell 的配置终结点。 这可以是在本地计算机上注册的任何终结点,包括默认 PowerShell 远程处理终结点或具有特定用户角色功能的自定义终结点。
接受命令的 base-64 编码字符串版本。 使用此参数将命令提交到需要复杂的引号或大括号的 PowerShell。 必须使用 UTF-16LE 字符编码设置字符串的格式。
传递给脚本的参数作为文字字符串(在当前 shell 的解释后)传递。 例如,如果处于 cmd.exe 并且想要传递环境变量值,则可以使用 cmd.exe 语法: powershell.exe -File .\test.ps1 -TestParam %windir%
相比之下,在 cmd.exe 中运行powershell.exe -File .\test.ps1 -TestParam $env:windir
会导致脚本接收文本字符串$env:windir
,因为它对当前 cmd.exe shell 没有特殊含义。 $env:windir
环境变量引用的样式可以在Command 参数中使用,因为该参数将解释为 PowerShell 代码。
同样,如果要从 Batch 脚本执行相同的命令,可以使用 %~dp0
而不是 .\
或 $PSScriptRoot
来表示当前执行目录: powershell.exe -File %~dp0test.ps1 -TestParam %windir%
。
如果改用 .\test.ps1
,PowerShell 将引发错误,因为它找不到文本路径 .\test.ps1
当 File 的值是文件路径时, File必须是 命令中的最后一个参数,因为在 File 参数名称后键入的任何字符都将解释为脚本文件路径,后跟脚本参数。
可以在 File 参数的值中包含脚本参数和值。 例如:-File .\Get-Script.ps1 -Domain Central
通常,将包括或忽略脚本的开关参数。
例如,以下命令使用脚本文件的 All 参数 Get-Script.ps1
: -File .\Get-Script.ps1 -All
在极少数情况下,可能需要为参数提供 布尔 值。
以这种方式运行脚本时,无法为 switch 参数传递显式布尔值。 PowerShell 6 () pwsh.exe
中删除了此限制。
File 参数不能支持使用需要参数值数组的参数的脚本。 遗憾的是,这是本机命令获取参数值的方式的限制。 调用本机可执行文件 ((如 powershell
或 pwsh
) )时,它不知道该如何处理数组,因此会将其作为字符串传递。
当脚本文件使用 exit
命令终止时,进程退出代码将设置为与 命令一起使用的 exit
数值参数。 正常终止时,退出代码始终 0
为 。
有关详细信息,请参阅 $LASTEXITCODE
about_Automatic_Variables。
-InputFormat {文本 |XML}
描述发送到 PowerShell 的数据格式。 有效值 (Text
文本字符串) 或 XML
(序列化 CLIXML 格式) 。
使用多线程单元启动 PowerShell。 此参数是在 PowerShell 3.0 中引入的。 在 PowerShell 2.0 中,多线程单元 (MTA) 是默认设置。 在 PowerShell 3.0 中,单线程单元 (STA) 是默认设置。
-NoExit
运行启动命令后不退出。
-NonInteractive
此开关用于创建不应需要用户输入的会话。 这对于在计划任务或 CI/CD 管道中运行的脚本非常有用。 任何使用交互式功能(如 Read-Host
或确认提示)的尝试都会导致语句终止错误,而不是挂起。
-NoLogo
启动时隐藏版权横幅。
-NoProfile
不加载 PowerShell 配置文件。
-OutputFormat {文本 | XML}
确定 PowerShell 输出内容的格式。 有效值 (Text
文本字符串) 或 XML
(序列化 CLIXML 格式) 。
-PSConsoleFile <FilePath>
加载指定的 PowerShell 控制台文件。 输入控制台文件的路径和名称。 若要创建控制台文件,请使用 PowerShell 中的 Export-console cmdlet。
使用单线程单元启动 PowerShell。 在 Windows PowerShell 2.0 中,多线程单元 (MTA) 是默认设置。 在 Windows PowerShell 3.0 中,单线程单元 (STA) 是默认设置。
-Version <PowerShell Version>
启动 PowerShell 的指定版本。 有效值为 2.0 和 3.0。 必须在系统上安装指定的版本。 如果计算机上安装了 Windows PowerShell 3.0,则默认版本为“3.0”。 否则,“2.0”为默认版本。 有关详细信息,请参阅 安装 PowerShell。
-WindowStyle <窗口样式>
为会话设置窗口样式。 有效值为 Normal
、Minimized
、Maximized
和 Hidden
。
-Help、-?、/?
显示 的 PowerShell.exe
帮助。 如果在 PowerShell 会话中键入 PowerShell.exe
命令,请在命令参数前面加上连字符 (-
) ,而不是正斜杠 (/
) 。 可以在 中使用 cmd.exe
连字符或正斜杠。
故障排除说明:在 PowerShell 2.0 中,从 PowerShell 控制台启动某些程序失败, LastExitCode 为 0xc0000142。
# Create a new PowerShell session and load a saved console file
PowerShell -PSConsoleFile sqlsnapin.psc1
# Create a new PowerShell V2 session with text input, XML output, and no logo
PowerShell -Version 2.0 -NoLogo -InputFormat text -OutputFormat XML
# Execute a PowerShell Command in a session
PowerShell -Command "Get-EventLog -LogName security"
# Run a script block in a session
PowerShell -Command {Get-EventLog -LogName security}
# An alternate way to run a command in a new session
PowerShell -Command "& {Get-EventLog -LogName security}"
# To use the -EncodedCommand parameter:
$command = "dir 'c:\program files' "
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
powershell.exe -encodedCommand $encodedCommand