Start 您所在的位置:网站首页 powershell和linux的区别 Start

Start

2023-11-21 01:04| 来源: 网络整理| 查看: 265

Start-Process 参考 模块: Microsoft.PowerShell.Management

启动本地计算机上的一个或多个进程。

语法 Start-Process [-FilePath] [[-ArgumentList] ] [-Credential ] [-WorkingDirectory ] [-LoadUserProfile] [-NoNewWindow] [-PassThru] [-RedirectStandardError ] [-RedirectStandardInput ] [-RedirectStandardOutput ] [-WindowStyle ] [-Wait] [-UseNewEnvironment] [-WhatIf] [-Confirm] [] Start-Process [-FilePath] [[-ArgumentList] ] [-WorkingDirectory ] [-PassThru] [-Verb ] [-WindowStyle ] [-Wait] [-WhatIf] [-Confirm] [] 说明

Start-Process cmdlet 启动本地计算机上的一个或多个进程。 默认情况下,Start-Process 创建一个新进程,该进程继承当前进程中定义的所有环境变量。

若要指定在进程中运行的程序,请输入可执行文件或脚本文件,或者可使用计算机上的程序打开的文件。 如果指定不可执行文件,Start-Process 会启动与该文件关联的程序,这一点与 Invoke-Item cmdlet 类似。

使用 Start-Process 的参数可以指定加载用户配置文件、在新窗口中启动进程或使用备用凭据等选项。

示例 示例 1:启动使用默认值的进程

此示例启动一个进程,该进程使用当前文件夹中的 Sort.exe 文件。 此命令使用所有默认值,包括默认窗口样式、工作文件夹和凭据。

Start-Process -FilePath "sort.exe" 示例 2:打印文本文件

此示例启动打印 C:\PS-Test\MyFile.txt 文件的进程。

Start-Process -FilePath "myfile.txt" -WorkingDirectory "C:\PS-Test" -Verb Print 示例 3:启动一个进程,以对项进行排序并返回到新文件

此示例启动一个进程,该进程对 TestSort.txt 文件中的项进行排序,然后在 Sorted.txt 文件中返回排序后的项。 所有错误都被写到 SortError.txt 文件。 UseNewEnvironment 参数指定该进程使用自己的环境变量运行。

$processOptions = @{ FilePath = "sort.exe" RedirectStandardInput = "TestSort.txt" RedirectStandardOutput = "Sorted.txt" RedirectStandardError = "SortError.txt" UseNewEnvironment = $true } Start-Process @processOptions

此示例使用 splatting 将参数传递给 cmdlet。 有关详细信息,请参阅 about_Splatting。

示例 4:在最大化窗口中启动进程

此示例启动 Notepad.exe 进程。 它将最大化窗口并在该进程完成之前一直保留该窗口。

Start-Process -FilePath "notepad" -Wait -WindowStyle Maximized 示例 5:以管理员身份启动 PowerShell

使用“以管理员身份运行”选项启动 PowerShell。

Start-Process -FilePath "powershell" -Verb RunAs 示例 6:使用不同动词来启动进程

此示例演示如何查找启动进程时可以使用的谓词。 可用的谓词取决于进程中运行的文件的文件扩展名。

$startExe = New-Object System.Diagnostics.ProcessStartInfo -Args powershell.exe $startExe.verbs open runas runasuser

此示例使用 New-Object 为 PowerShell 进程中运行的 powershell.exe 文件创建一个 System.Diagnostics.ProcessStartInfo 对象。 ProcessStartInfo 对象的谓词属性显示,可以将 Open 和 RunAs 谓词与 powershell.exe 或运行 .exe 文件的任何进程一起使用。

示例 7:指定进程的参数

这两个命令都启动 Windows 命令解释器,在 Program Files 文件夹中发出 dir 命令。 由于此文件夹名称包含空格,因此值需要用转义引号括起来。 请注意,第一个命令将字符串指定为 ArgumentList。 第二个命令是字符串数组。

Start-Process -FilePath "$env:comspec" -ArgumentList "/c dir `"%SystemDrive%\Program Files`"" Start-Process -FilePath "$env:comspec" -ArgumentList "/c","dir","`"%SystemDrive%\Program Files`"" 示例 8:使用备用凭据以管理员身份运行命令

在 Windows 上,可以运行 Start-Process -Verb RunAs 以提升权限启动进程。 这会提升当前用户的上下文。 使用 Credential 参数可以指定备用用户名和密码,从而可以在不同的用户内容中启动进程。 但是,Credential 和 Verb 参数不能一起使用。

若要以提升权限启动进程,可使用备用凭据,必须先使用备用凭据启动 PowerShell,然后使用 Start-Process 以提升权限启动进程。

$cred = Get-Credential $args = '-noprofile -command "Start-Process cmd.exe -Verb RunAs -args /k"' Start-Process pwsh.exe -Credential $cred -WindowStyle Hidden -ArgumentList $args

此示例从备用凭据下运行的 PowerShell 会话以提升权限启动 cmd.exe。

示例 9:在 Linux 上创建拆离进程

在 Windows 上,Start-Process 会创建独立于启动 shell 运行的独立进程。 在非 Windows 平台上,新启动的进程附加到启动的 shell。 如果启动 shell 已关闭,则会终止子进程。

为了避免在类似 Unix 的平台上终止子进程,可以将 Start-Process 与 nohup 结合使用。 以下示例在 Linux 上启动 PowerShell 的后台实例,即使在关闭启动会话后仍保持活动状态。 nohup 命令收集当前目录中文件 nohup.out 中的输出。

# Runs for 2 minutes and appends output to ./nohup.out Start-Process nohup 'pwsh -noprofile -c "1..120 | % { Write-Host . -NoNewline; sleep 1 }"'

在此示例中,Start-Process 运行 Linux nohup 命令,该命令以拆离进程的形式启动 pwsh。 有关详细信息,请参阅 Wikipedia 上的 nohup。

参数 -ArgumentList

指定此 cmdlet 启动进程时要使用的参数或参数值。 可以将参数接受为包含用空格分隔的参数的单个字符串,也可以将其接受为用逗号分隔的字符串数组。 该 cmdlet 将数组联接到单个字符串中,其中数组的每个元素用单个空格分隔。

将 ArgumentList 值传递到新进程时,不包括 PowerShell 字符串的外部引号。 如果参数或参数值包含空格或引号,则需要用转义双引号括起来。 有关详细信息,请参阅 about_Quoting_Rules。

为获得最佳结果,请使用单个 ArgumentList 值,其中包含所有参数和所需的任何引号字符。

Type:String[] Aliases:Args Position:1 Default value:None Required:False Accept pipeline input:False Accept wildcard characters:False -Confirm

提示你在运行 cmdlet 之前进行确认。

Type:SwitchParameter Aliases:cf Position:Named Default value:None Required:False Accept pipeline input:False Accept wildcard characters:False -Credential

指定有权执行此操作的用户帐户。 默认情况下,该 cmdlet 使用当前用户的凭据。

键入用户名,如 User01 或 Domain01\User01;或输入 Get-Credential cmdlet 生成的 PSCredential 对象。 如果键入用户名,系统会提示输入密码。

凭据存储在 PSCredential 对象中,密码存储为 SecureString。

注意

有关 SecureString 数据保护的详细信息,请参阅 SecureString 的安全性如何?。

Type:PSCredential Aliases:RunAs Position:Named Default value:Current user Required:False Accept pipeline input:False Accept wildcard characters:False -FilePath

指定在进程中运行的程序的可选路径和文件名。 输入与计算机上的程序相关联的可执行文件或文档(如 .txt 或 .doc 文件)的名称。 此参数是必需的。

如果仅指定与系统命令不对应的文件名,请使用 WorkingDirectory 参数指定路径。

Type:String Aliases:PSPath, Path Position:0 Default value:None Required:True Accept pipeline input:False Accept wildcard characters:False -LoadUserProfile

指示此 cmdlet 加载当前用户的 HKEY_USERS 注册表项中存储的 Windows 用户配置文件。 此参数不适用于非 Windows 系统。

此参数不影响 PowerShell 配置文件。 有关详细信息,请参阅 about_Profiles。

Type:SwitchParameter Aliases:Lup Position:Named Default value:None Required:False Accept pipeline input:False Accept wildcard characters:False -NoNewWindow

在当前控制台窗口中启动新进程。 默认情况下在 Windows 上,PowerShell 会打开一个新窗口。 在非 Windows 系统上,永远不会获得新窗口。

不能在同一命令中使用 NoNewWindow 参数和 WindowStyle 参数。

此参数不适用于非 Windows 系统。

Type:SwitchParameter Aliases:nnw Position:Named Default value:None Required:False Accept pipeline input:False Accept wildcard characters:False -PassThru

为 cmdlet 启动的每个进程返回一个进程对象。 默认情况下,此 cmdlet 不会生成任何输出。

Type:SwitchParameter Position:Named Default value:None Required:False Accept pipeline input:False Accept wildcard characters:False -RedirectStandardError

指定文件。 此 cmdlet 将进程产生的所有错误发送给指定的文件。 输入路径和文件名。 默认情况下,在控制台中显示这些错误。

Type:String Aliases:RSE Position:Named Default value:None Required:False Accept pipeline input:False Accept wildcard characters:False -RedirectStandardInput

指定文件。 此 cmdlet 从指定文件读取输入。 输入输入文件的路径和文件名。 默认情况下,进程从键盘获取其输入。

Type:String Aliases:RSI Position:Named Default value:None Required:False Accept pipeline input:False Accept wildcard characters:False -RedirectStandardOutput

指定文件。 此 cmdlet 将进程产生的输出发送给指定的文件。 输入路径和文件名。 默认情况下,在控制台中显示该输出。

Type:String Aliases:RSO Position:Named Default value:None Required:False Accept pipeline input:False Accept wildcard characters:False -UseNewEnvironment

指示此 cmdlet 使用为进程指定的新环境变量。 默认情况下,使用从父进程继承的环境变量运行启动的进程。

在 Windows 上,使用 UseNewEnvironment 时,仅包含为计算机范围定义的默认环境变量的新进程会启动。 这有副作用,即 $env:USERNAME 设置为 SYSTEM。 不包括用户范围中的变量。

Type:SwitchParameter Position:Named Default value:None Required:False Accept pipeline input:False Accept wildcard characters:False -Verb

指定此 cmdlet 启动进程时要使用的动词。 可用的谓词取决于进程中运行的文件的文件扩展名。

下表列出了适用于某些常用进程文件类型的动词。

文件类型 动词 .cmd Edit、Open、Print、RunAs、RunAsUser .exe Open、RunAs、RunAsUser .txt Open、Print、PrintTo .wav Open、Play

若要查找进程中运行的文件适用的谓词,请使用 New-Object cmdlet 来为该文件创建 System.Diagnostics.ProcessStartInfo 对象。 ProcessStartInfo 对象的 Verbs 属性中会显示可用动词。 有关详细信息,请参阅示例。

此参数不适用于非 Windows 系统。

Type:String Position:Named Default value:None Required:False Accept pipeline input:False Accept wildcard characters:False -Wait

指示此 cmdlet 将等到指定进程及其后代完成后再接受其他输入。 此参数禁止显示命令提示符或在进程完成之前一直保留窗口。

Type:SwitchParameter Position:Named Default value:None Required:False Accept pipeline input:False Accept wildcard characters:False -WhatIf

显示运行该 cmdlet 时会发生什么情况。 cmdlet 未运行。

此参数是在 PowerShell 6.0 中引入的。

Type:SwitchParameter Aliases:wi Position:Named Default value:None Required:False Accept pipeline input:False Accept wildcard characters:False -WindowStyle

指定用于新进程的窗口的状态。 默认值为 Normal。 此参数的可接受值为:

Normal Hidden Minimized Maximized

不能在同一命令中使用 WindowStyle 参数和 NoNewWindow 参数。

此参数不适用于非 Windows 系统。 在非 Windows 系统上使用时,永远不会获得新窗口。

Type:ProcessWindowStyle Accepted values:Normal, Hidden, Minimized, Maximized Position:Named Default value:None Required:False Accept pipeline input:False Accept wildcard characters:False -WorkingDirectory

指定新进程应启动的位置。

如果未指定,该 cmdlet 默认为 FilePath 参数中指定的完全限定位置。 如果 FilePath 参数的值未完全限定,则默认为调用进程的当前工作目录。

不支持通配符。 路径不得包含将解释为通配符的字符。

Type:String Position:Named Default value:None Required:False Accept pipeline input:False Accept wildcard characters:False 输入

None

不能通过管道将对象传递给此 cmdlet。

输出

None

默认情况下,此 cmdlet 不返回任何输出。

Process

如果使用 PassThru 参数,则此 cmdlet 将返回进程对象。

备注

PowerShell 包含以下 Start-Process 别名:

所有平台 saps Windows start

本机命令是操作系统中安装的可执行文件。 这些可执行文件可以从任何命令行 shell(如 PowerShell)运行。 通常,运行命令的方式与在 bash 或 cmd.exe 中完全相同。 Start-Process cmdlet 可用于运行任何本机命令,但仅当需要控制命令的执行方式时才应使用。

Start-Process 可用于在非 Windows 平台上运行 GUI 程序。 例如,运行 Start-Proces 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


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有