使用 Windows PowerShell 启动进程
Start-Process
cmdlet 是一个 PowerShell 命令,用于以受控和托管的方式启动单个或多个进程。默认情况下,启动的进程会继承所有当前的 PowerShell 环境。
Start-Process
cmdlet 可以执行或运行可执行文件、批处理脚本、MS-DOS 和 PowerShell 命令,甚至 Java 应用程序。此外,Windows PowerShell 可以使用 Start-Process
cmdlet 来指定用户配置文件、Windows 状态和凭据等。
本文将讨论 Start-Process
cmdlet 如何工作,并在编写脚本时使用它。
PowerShell 中的 Start-Process
Cmdlet
Start-Process
cmdlet 执行一个或多个进程、可执行文件或脚本文件,或已安装软件可以在计算机上打开的任何文件。
使用 Windows PowerShell 时,Start-Process
cmdlet 的基本语法如下所示。
Start-Process <string>
Start-Process
Cmdlet 参数
Start-Process
cmdlet 可以使用参数为 cmdlet 添加更多功能、功能和灵活性。
启动新进程或可执行文件
如前所述,Start-Process
命令的最基本用法是提供可执行文件、批处理或脚本文件,或类似以下语法的命令。例如,使用以下语法调用记事本应用程序时将打开。
Start-Process notepad.exe
或者,cmdlet 可以使用 -FilePath
参数来指定我们要执行的文件位置。
Start-Process -FilePath notepad.exe
我们也可以在下面指定可执行文件或批处理文件的完整路径。在下面的示例中,我们将在下面的示例中执行位于 D:\scripts
目录下的批处理文件。
Start-Process -FilePath "D:\scripts\backup.bat"
将标准输入设置为文件
我们可以使用标准输入指定进程输入,其中提供的标准输入内容被重定向到给定进程。在这种情况下,-RedirectStandardInput
参数可以将文件设置为新创建进程的输入。
Start-Process -FilePath "D:\scripts\backup.bat" -RedirectStandardInput test.txt
在上面的示例语法中,backup.bat
可执行输入来自文件 test.txt
。
将标准输出设置为文件
当一个进程被执行时,它可能会创建一些我们可以打印到终端、屏幕或文件的输出。我们可以使用 -RedirectStandardOutput
参数来指定输出到文件中。
Start-Process -FilePath "D:\scripts\backup.bat" -RedirectStandardOutput test.txt
backup.bat
可执行输出来自上述示例语法中的文件 test.txt
。
将标准错误输出设置为文件
在运行进程时,可能会出现错误,并且这些错误的相关信息默认会打印到控制台或终端中。使用 -RedirectStandardError
参数可以将输出重定向到如下文件。
Start-Process -FilePath "D:\scripts\backup.bat" -RedirectStandardError errors.txt
在上面的示例语法中,如果我们在运行 backup.bat
可执行文件时遇到任何错误,错误将打印在文件 errors.txt
中。
设置工作目录
默认情况下,新进程在当前工作目录中执行,通常是系统驱动器 C:
。但是,我们可以使用 -WorkingDirectory
参数在下面设置一个新的工作目录。
Start-Process notepad.exe -WorkingDirectory "D:\"
对于这个例子,
创造新环境
连同我们之前在文章中讨论的参数,我们可以将它们合并到一个脚本块中。
-UseNewEnvironment
参数指定进程使用其环境变量运行。
$processOptions = @{
FilePath = "sort.exe"
RedirectStandardInput = "TestSort.txt"
RedirectStandardOutput = "Sorted.txt"
RedirectStandardError = "SortError.txt"
UseNewEnvironment = $true
}
Start-Process @processOptions
最大化窗口中的启动进程
Start-Process
命令可以启动命令行进程或可能有一些 GUI 的 GUI 进程。
该脚本可以使用 -WindowStyle
参数设置 GUI 窗口大小。该参数可以设置为最大化以最大化新的进程窗口。
Start-Process notepad.exe -WindowStyle Maximized
使用不同用户的 Start-Process
默认情况下,启动的进程以当前用户权限执行。但是,Start-Process
cmdlet 可以使用 -Credential
参数通过提供我们要执行进程的新用户来更改进程的权限。
如果你输入用户名,系统将提示你输入密码。
Start-Process notepad.exe -Credential <username>
以管理员身份启动进程
我们可以使用 - Verb
参数以管理员身份运行应用程序。
Start-Process notepad.exe -Verb RunAs
带有指定参数的 Start-Process
命令、进程或批处理文件可以接受单个或多个参数来获取输入数据。
该输入数据称为参数,Start-Process
命令可以通过 -ArgumentList
向已启动的进程提供参数。提供的参数列表作为参数传递给进程。
Start-Process -FilePath "$env:comspec" -ArgumentList "/c","dir","`"%systemdrive%\program files`""
PowerShell Start-Process
的优势
- 脚本文件只能在本地打开。这是一种使用 Windows PowerShell 脚本防止远程攻击的安全技术。
- cmdlet 在 Microsoft 支持的脚本环境中运行。只要支持 Windows PowerShell,Microsoft 就会投入资源来保持语言最新,并进行更新修订。
- 一个庞大的开发者社区很容易与
Start-Process
cmdlet 共享知识。 - cmdlet 和系统数据存储使用标准、一致的语法和命名约定来轻松共享数据。
- 使用此 cmdlet,操作系统的导航得到简化,让用户熟悉文件系统、注册表和其他数据。
- 对象可以很容易地直接操作或发送到其他工具或数据库。
- 软件供应商和开发人员可以构建自定义工具。
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn