PowerShell.exe 命令行帮助PowerShell.exe Command-Line Help

本文内容

可以使用 PowerShell.exe 从另一工具(如 Cmd.exe)的命令行启动 PowerShell 会话,或在 PowerShell 命令行中使用它来启动新会话。使用参数自定义会话。

语法Syntax

  1. PowerShell[.exe]
  2. [-Command { - | <script-block> [-args <arg-array>]
  3. | <string> [<CommandParameters>] } ]
  4. [-EncodedCommand <Base64EncodedCommand>]
  5. [-ExecutionPolicy <ExecutionPolicy>]
  6. [-File <FilePath> [<Args>]]
  7. [-InputFormat {Text | XML}]
  8. [-Mta]
  9. [-NoExit]
  10. [-NoLogo]
  11. [-NonInteractive]
  12. [-NoProfile]
  13. [-OutputFormat {Text | XML}]
  14. [-PSConsoleFile <FilePath> | -Version <PowerShell version>]
  15. [-Sta]
  16. [-WindowStyle <style>]
  17. PowerShell[.exe] -Help | -? | /?

参数Parameters

-EncodedCommand -EncodedCommand

接受命令的 base-64 编码字符串版本。使用此参数将命令提交到需要复杂的引号或大括号的 PowerShell。

-ExecutionPolicy -ExecutionPolicy

为当前会话设置默认执行策略,并将其保存在 $env:PSExecutionPolicyPreference 环境变量中。此参数不会更改在注册表中设置的 PowerShell 执行策略。若要了解 PowerShell 执行策略(包括有效值列表),请参阅 about_Execution_Policies

-File []-File []

在本地作用域中运行指定的脚本(“dot-sourced”),以便脚本创建的函数和变量在当前会话中可用。输入脚本文件路径和任何参数。“文件”必须是命令中的最后一个参数。在 -File 参数之后键入的所有值都被视为脚本文件路径和传递到该脚本的参数。

传递给脚本的参数作为文字字符串(在当前 shell 的解释后)传递。例如,如果处于 cmd.exe,并且想要将环境变量值传递,将使用 cmd.exe 语法: powershell.exe -File .\test.ps1 -TestParam %windir%

与此相反,运行powershell.exe -File .\test.ps1 -TestParam $env:windir中接收的文本字符串在脚本中的 cmd.exe 结果$env:windir因为它具有到当前的 cmd.exe shell 没有特殊含义。$env:windir环境变量引用样式可以内部使用-Command参数,因为它那里将解释为 PowerShell 代码。

-InputFormat {文本 |XML}-InputFormat {Text | XML}

描述发送到 PowerShell 的数据格式。有效值为“Text”(文本字符串)或“XML”(序列化 CLIXML 格式)。

-Mta-Mta

使用多线程单元启动 PowerShell。此参数是在 PowerShell 3.0 中引入的。在 PowerShell 3.0 中,单线程单元 (STA) 是默认设置。在 PowerShell 2.0 中,多线程单元 (MTA) 是默认设置。

-NoExit-NoExit

运行启动命令后不退出。

启动时隐藏版权横幅。

-NonInteractive-NonInteractive

不向用户显示交互式提示。

-NoProfile-NoProfile

不加载 PowerShell 配置文件。

-OutputFormat {文本 | XML}-OutputFormat {Text | XML}

确定 PowerShell 输出内容的格式。有效值为“Text”(文本字符串)或“XML”(序列化 CLIXML 格式)。

-PSConsoleFile -PSConsoleFile

加载指定的 PowerShell 控制台文件。输入控制台文件的路径和名称。若要创建控制台文件,请在 PowerShell 中运行 Export-Console cmdlet。

-Sta-Sta

使用单线程单元启动 PowerShell。在 PowerShell 3.0 中,单线程单元 (STA) 是默认设置。在 PowerShell 2.0 中,多线程单元 (MTA) 是默认设置。

-Version -Version

启动 PowerShell 的指定版本。必须在系统上安装指定的版本。如果计算机上已安装 PowerShell 3.0,则有效值为“2.0”和“3.0”。默认值为“3.0”。

如果未安装 PowerShell 3.0,则唯一的有效值为“2.0”。将忽略其他值。

有关详细信息,请参阅安装 Windows PowerShell

-WindowStyle -WindowStyle

为会话设置窗口样式。有效值包括 Normal、Minimized、Maximized 和 Hidden。

-Command-Command

执行指定的命令(和所有参数),就像是在 PowerShell 命令提示符下键入的命令一样。在执行之后,PowerShell 退出除非NoExit指定参数。-Command 后面的任何文本都会作为单个命令行发送到 PowerShell。这与 -File 处理发送到脚本的参数的方式不同。

-Command可以是"-",一个字符串或脚本块。该命令的结果作为反序列化 XML 对象,而非活动对象返回到父外壳程序。

如果的值-Command是"-",从标准输入读取命令文本。

时的值-Command是一个字符串,命令必须是最后一个参数指定,因为该命令将被解释为命令参数后键入的所有字符。

命令参数仅接受执行的脚本块时它可以识别的值传递给-Command作为脚本块类型。这是可能从另一个 PowerShell 主机中运行 PowerShell.exe 时。类型可能包含中的现有变量、 返回由表达式,或已分析的 PowerShell 脚本块括在大括号中的文本的脚本块的形式托管{}之前传递给 PowerShell.exe。

在 cmd.exe,没有就没有脚本块 (或脚本块类型) 中,因此传递给的值命令始终是一个字符串。您可以编写一个脚本块内的字符串,但而不是正在执行它的行为完全像你在典型的 PowerShell 提示符下键入它,请打印脚本的内容阻止回给你。

字符串传递给-Command仍将继续执行作为 PowerShell,因此脚本块的大括号通常不需要首先从 cmd.exe 运行时。若要执行内联脚本块内一个字符串,定义调用运算符&可用:

  1. "& {<command>}"

-Help、-?、/?-Help, -?, /?

显示 powershell.exe 的语法。如果要在 PowerShell 中键入 PowerShell.exe 命令,请以连字符 (-) 作为命令参数的前缀,不要使用正斜杠 (/)。你可以在 Cmd.exe 中使用连字符或正斜杠。

备注

故障排除注释:在 PowerShell 2.0 中中, 启动某些程序在 Windows PowerShell 控制台失败,lastexitcode 为 0xc0000142。

示例EXAMPLES

  1. # Create a new PowerShell session and load a saved console file
  2. PowerShell -PSConsoleFile sqlsnapin.psc1
  3. # Create a new PowerShell V2 session with text input, XML output, and no logo
  4. PowerShell -Version 2.0 -NoLogo -InputFormat text -OutputFormat XML
  5. # Execute a PowerShell Command in a session
  6. PowerShell -Command "Get-EventLog -LogName security"
  7. # Run a script block in a session
  8. PowerShell -Command {Get-EventLog -LogName security}
  9. # An alternate way to run a command in a new session
  10. PowerShell -Command "& {Get-EventLog -LogName security}"
  11. # To use the -EncodedCommand parameter:
  12. $command = "dir 'c:\program files' "
  13. $bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
  14. $encodedCommand = [Convert]::ToBase64String($bytes)
  15. powershell.exe -encodedCommand $encodedCommand