$env:FOO = 'foo'
Start-Process pwsh -NoNewWindow -ArgumentList '-c', '$env:FOO'
Start-Process pwsh -NoNewWindow -ArgumentList '-c', '$env:FOO' -Environment @{
FOO = 'bar'
Start-Process pwsh -NoNewWindow -ArgumentList '-c', '$env:FOO' -Environment @{
FOO = $null
-ArgumentList
指定此 cmdlet 启动进程时要使用的参数或参数值。 参数可以接受为包含用空格分隔的参数的单个字符串,也可以接受为用逗号分隔的字符串数组。 该 cmdlet 将数组联接到单个字符串中,其中数组的每个元素用单个空格分隔。
将 ArgumentList 值传递到新进程时,不包括 PowerShell 字符串的外部引号。 如果参数或参数值包含空格或引号,则需要用转义双引号括起来。 有关详细信息,请参阅 about_Quoting_Rules。
为获得最佳结果,请使用单个 ArgumentList 值,其中包含所有参数和任何所需的引号字符。
类型:String[]
别名:Args
Position:1
默认值:None
必需:False
接受管道输入:False
接受通配符:False
-Confirm
在运行 cmdlet 之前,提示你进行确认。
类型:SwitchParameter
别名:cf
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False
-Credential
指定有权执行此作的用户帐户。 默认情况下,cmdlet 使用当前用户的凭据。
键入用户名(如 User01 或 Domain01\User01),或输入由 Get-Credential
cmdlet 生成的 PSCredential 对象。 如果键入用户名,系统会提示输入密码。
凭据存储在 PSCredential 对象中,密码存储为 SecureString。
有关 SecureString 数据保护的详细信息,请参阅 SecureString 的安全性如何?。
指定要作为哈希表替代进程的一个或多个环境变量。 将环境变量的名称指定为哈希表中的键和所需值。 若要取消设置环境变量,请将其值指定为 $null
。
在进程中替换指定的变量。 指定 PATH
环境变量时,该变量将替换为 $PSHOME
的值,后跟此参数中的指定值。 在 Windows 上,该命令在新值之后,在计算机和用户范围中追加 PATH
的值。
此参数已在 PowerShell 7.4 中添加。
类型:Hashtable
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False
-FilePath
指定进程中运行的程序的可选路径和文件名。 输入与计算机上的程序关联的可执行文件或文档的名称,例如 .txt
或 .doc
文件。 此参数是必需的。
如果仅指定与系统命令不对应的文件名,请使用 WorkingDirectory 参数指定路径。
类型:String
别名:PSPath, Path
Position:0
默认值:None
必需:True
接受管道输入:False
接受通配符:False
-LoadUserProfile
指示此 cmdlet 加载存储在当前用户的 HKEY_USERS
注册表项中的 Windows 用户配置文件。 该参数不适用于非 Windows 系统。
此参数不会影响 PowerShell 配置文件。 有关详细信息,请参阅 about_Profiles。
类型:SwitchParameter
别名:Lup
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False
-NoNewWindow
在当前控制台窗口中启动新进程。 默认情况下,在 Windows 上,PowerShell 会打开一个新窗口。 在非 Windows 系统上,你永远不会获得新窗口。
不能在同一命令中使用 NoNewWindow 和 WindowStyle 参数。
该参数不适用于非 Windows 系统。
类型:SwitchParameter
别名:nnw
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False
-PassThru
返回 cmdlet 启动的每个进程的进程对象。 默认情况下,此 cmdlet 不会生成任何输出。
类型:SwitchParameter
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False
-RedirectStandardError
指定文件。 此 cmdlet 会将进程生成的任何错误发送到指定的文件。
输入路径和文件名。 默认情况下,错误显示在控制台中。
类型:String
别名:RSE
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False
指定文件。 此 cmdlet 从指定文件读取输入。 输入输入文件的路径和文件名。 默认情况下,进程从键盘获取其输入。
类型:String
别名:RSI
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False
-RedirectStandardOutput
指定文件。 此 cmdlet 将进程生成的输出发送到指定的文件。
输入路径和文件名。 默认情况下,输出显示在控制台中。
类型:String
别名:RSO
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False
-UseNewEnvironment
指示此 cmdlet 使用为进程指定的新环境变量。 默认情况下,启动的进程使用从父进程继承的环境变量运行。
在 Windows 上,使用 UseNewEnvironment时,新进程只会包含为 计算机 范围定义的默认环境变量。 这有一个副作用,即 $env:USERNAME
设置为 SYSTEM。 不包括 用户 范围中的变量。
类型:SwitchParameter
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False
-Verb
指定此 cmdlet 启动进程时要使用的谓词。 可用的谓词由进程中运行的文件的文件扩展名确定。
下表显示了一些常见进程文件类型的谓词。
若要查找可用于进程中运行的文件的谓词,请使用 New-Object
cmdlet 为该文件创建 System.Diagnostics.ProcessStartInfo 对象。 可用谓词位于 ProcessStartInfo 对象的 Verbs 属性中。 有关详细信息,请参阅示例。
该参数不适用于非 Windows 系统。
类型:String
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False
-Wait
指示此 cmdlet 等待指定的进程及其后代完成,然后再接受更多输入。 此参数禁止命令提示符或保留窗口,直到进程完成。
类型:SwitchParameter
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False
-WhatIf
显示 cmdlet 运行时会发生什么情况。 该 cmdlet 未运行。
此参数是在 PowerShell 6.0 中引入的。
类型:SwitchParameter
别名:wi
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False
-WindowStyle
指定用于新进程的窗口的状态。 默认值为 Normal
。
此参数的可接受值为:
Normal
Hidden
Minimized
Maximized
不能在同一命令中使用 WindowStyle 和 NoNewWindow 参数。
该参数不适用于非 Windows 系统。 在非 Windows 系统上使用时,你永远不会获得新窗口。
类型:ProcessWindowStyle
接受的值:Normal, Hidden, Minimized, Maximized
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False
-WorkingDirectory
指定新进程应启动的位置。
如果未指定,该 cmdlet 默认为 FilePath 参数中指定的完全限定位置。 如果 FilePath 参数的值未完全限定,则默认为调用进程的当前工作目录。
不支持通配符。 路径不得包含将解释为通配符的字符。
类型:String
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False
不能通过管道将对象传递给此 cmdlet。
默认情况下,此 cmdlet 不返回任何输出。
Process
使用 PassThru 参数时,此 cmdlet 将返回 Process 对象。
PowerShell 包含以下 Start-Process
别名:
start
本机命令是在作系统中安装的可执行文件。 这些可执行文件可以从任何命令行 shell(如 PowerShell)运行。 通常,运行命令的方式与 bash
或 cmd.exe
完全相同。
Start-Process
cmdlet 可用于运行任何本机命令,但仅当需要控制命令的执行方式时才应使用。
Start-Process
可用于在非 Windows 平台上运行 GUI 程序。 例如,运行 Start-Process gedit
以启动 GNOME 桌面环境常用的图形文本编辑器。
默认情况下,Start-Process
异步启动进程 。 即使新进程仍在运行,控件也会立即返回到 PowerShell。
在本地系统上,启动的进程与调用过程无关。
在远程系统上,当远程会话结束时,新进程将立即在 Start-Process
命令后终止。 因此,不能在需要启动的进程超过会话的远程会话中使用 Start-Process
。
如果需要在远程会话中使用 Start-Process
,请使用 Wait 参数调用它。 或者,可以使用其他方法在远程系统上创建新进程。
使用 Wait 参数时,Start-Process
等待进程树(进程及其所有后代)在返回控件之前退出。 这不同于 Wait-Process
cmdlet 的行为,该 cmdlet 仅等待指定的进程退出。
在 Windows 上,Start-Process
最常见的用例是使用 Wait 参数阻止进度,直到新进程退出。 在非 Windows 系统上,这很少是必需的,因为命令行应用程序的默认行为等效于 Start-Process -Wait
。
此 cmdlet 是使用 System.Diagnostics.Process 类的 Start 方法实现的。 有关此方法的详细信息,请参阅 Process.Start 方法。
about_Quoting_Rules
Debug-Process
Get-Process
Start-Service
Stop-Process
Wait-Process