Start-Process
Запускает один или несколько процессов на локальном компьютере.
Синтаксис
Start-Process
[-FilePath] <string>
[[-ArgumentList] <string[]>]
[-Credential <pscredential>]
[-WorkingDirectory <string>]
[-LoadUserProfile]
[-NoNewWindow]
[-PassThru]
[-RedirectStandardError <string>]
[-RedirectStandardInput <string>]
[-RedirectStandardOutput <string>]
[-WindowStyle <ProcessWindowStyle>]
[-Wait]
[-UseNewEnvironment]
[<CommonParameters>]
Start-Process
[-FilePath] <string>
[[-ArgumentList] <string[]>]
[-WorkingDirectory <string>]
[-PassThru]
[-Verb <string>]
[-WindowStyle <ProcessWindowStyle>]
[-Wait]
[<CommonParameters>]
Описание
Командлет Start-Process
запускает один или несколько процессов на локальном компьютере. По умолчанию Start-Process
создается новый процесс, наследующий все переменные среды, определенные в текущем процессе.
Чтобы указать программу, которая выполняется в процессе, введите исполняемый файл или файл скрипта или файл, который можно открыть с помощью программы на компьютере. Если указать файл, отличный от исполняемого файла, Start-Process
запускает программу, связанную с файлом, аналогично командлету Invoke-Item
.
Параметры можно использовать для указания параметров 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 для передачи параметров командлету. Дополнительные сведения см. в 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
для создания объекта System.Diagnostics.ProcessStartInfo для powershell.exe
файла, который выполняется в процессе PowerShell. Свойство Verbs объекта ProcessStartInfo показывает, что можно использовать open и RunAs
verbs with powershell.exe
, или с любым процессом, выполняющим .exe
файл.
Пример 7. Указание аргументов для процесса
Обе команды запускают интерпретатор команд Windows, выдавая dir
команду в папке Program Files
. Так как это имя папки содержит пробел, значение должно быть окружено экранируемыми кавычками.
Обратите внимание, что первая команда указывает строку в качестве ArgumentList. Вторая команда — это массив строк.
Start-Process -FilePath "$env:comspec" -ArgumentList "/c dir `"%SystemDrive%\Program Files`""
Start-Process -FilePath "$env:comspec" -ArgumentList "/c","dir","`"%SystemDrive%\Program Files`""
Параметры
-ArgumentList
Задает параметры или значения параметров, используемые при запуске этого командлета. Аргументы можно принимать в виде одной строки с аргументами, разделенными пробелами, или как массив строк, разделенных запятыми. Командлет объединяет массив в одну строку с каждым элементом массива, разделенным одним пробелом.
Внешние кавычки строк PowerShell не включаются, когда значения ArgumentList передаются в новый процесс. Если параметры или значения параметров содержат пробел или кавычки, они должны быть окружены экранируемыми двойными кавычками. Дополнительные сведения см. в about_Quoting_Rules.
Для получения наилучших результатов используйте одно значение ArgumentList , содержащее все аргументы и все необходимые символы кавычки.
Тип: | String[] |
Aliases: | Args |
Position: | 1 |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Credential
Указывает учетную запись пользователя с разрешением на выполнение этого действия. По умолчанию командлет использует учетные данные текущего пользователя.
Введите имя пользователя, например User01 или Domain01\User01, или введите объект PSCredential, созданный командлетомGet-Credential
. Если ввести имя пользователя, вам будет предложено ввести пароль.
Учетные данные хранятся в объекте PSCredential , а пароль хранится как SecureString.
Примечание.
Дополнительные сведения о защите данных SecureString см. в разделе "Как безопасна Защита SecureString?".
Тип: | PSCredential |
Aliases: | RunAs |
Position: | Named |
Default value: | Current user |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-FilePath
Указывает необязательный путь и имя файла программы, которая выполняется в процессе. Введите имя исполняемого файла или документа, например .txt
файла или .doc
файла, связанного с программой на компьютере. Этот параметр является обязательным.
Если указать только имя файла, используйте параметр WorkingDirectory , чтобы указать путь.
Тип: | String |
Aliases: | PSPath |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-LoadUserProfile
Указывает, что этот командлет загружает профиль пользователя Windows, хранящийся в HKEY_USERS
разделе реестра для текущего пользователя.
Этот параметр не влияет на профили PowerShell. Дополнительные сведения см. в разделе about_Profiles.
Тип: | SwitchParameter |
Aliases: | Lup |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-NoNewWindow
Предотвращает запуск процесса в новом окне. По умолчанию в Windows PowerShell открывается новое окно.
Параметры NoNewWindow и WindowStyle нельзя использовать в той же команде.
Тип: | SwitchParameter |
Aliases: | nnw |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-PassThru
Возвращает объект процесса для каждого запущенного командлетом процесса По умолчанию этот командлет не создает выходные данные.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-RedirectStandardError
Указывает файл. Этот командлет отправляет все ошибки, созданные процессом, в указанный файл. Введите путь и имя файла. По умолчанию все ошибки отображаются в консоли.
Тип: | String |
Aliases: | RSE |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-RedirectStandardInput
Указывает файл. Этот командлет считывает входные данные из указанного файла. Введите путь и имя файла входного файла. По умолчанию процесс получает входные данные с клавиатуры.
Тип: | String |
Aliases: | RSI |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-RedirectStandardOutput
Указывает файл. Этот командлет отправляет выходные данные, созданные процессом, в указанный файл. Введите путь и имя файла. По умолчанию выходные данные отображаются в консоли.
Тип: | String |
Aliases: | RSO |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-UseNewEnvironment
Указывает, что этот командлет использует новые переменные среды, указанные для процесса. По умолчанию запущенный процесс выполняется с переменными среды, унаследованными от родительского процесса.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Verb
Указывает команду, используемую при запуске этого командлета. Доступные команды определяются расширением имени файла, который выполняется в процессе.
В приведенной ниже таблице показаны команды, доступные для некоторых распространенных типов файлов.
Тип файла | Команды |
---|---|
.cmd | Edit , , Open Print , RunAs RunAsUser |
.exe | Open , , RunAs RunAsUser |
.txt | Open , , Print PrintTo |
.wav | Open , Play |
Чтобы найти команды, которые можно использовать с файлом, выполняющимся в процессе, используйте New-Object
командлет для создания объекта System.Diagnostics.ProcessStartInfo для файла. Доступные команды находятся в свойстве Verbs объекта ProcessStartInfo. Дополнительные сведения см. в примерах.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Wait
Указывает, что этот командлет ожидает завершения указанного процесса и его потомков перед принятием дополнительных входных данных. Этот параметр подавляет командную строку или сохраняет окно до завершения процессов.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-WindowStyle
Указывает состояние окна, используемого для нового процесса. Значение по умолчанию — Normal
.
Допустимые значения для этого параметра:
Normal
Hidden
Minimized
Maximized
Параметры WindowStyle и NoNewWindow нельзя использовать в той же команде.
Тип: | ProcessWindowStyle |
Допустимые значения: | Normal, Hidden, Minimized, Maximized |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-WorkingDirectory
Указывает расположение, в котором должен начинаться новый процесс. По умолчанию используется расположение запущенного исполняемого файла или документа. Подстановочные знаки не поддерживаются. Путь не должен содержать символы, которые будут интерпретироваться как подстановочные знаки.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
Входные данные
None
Невозможно передать объекты в этот командлет.
Выходные данные
None
По умолчанию этот командлет не возвращает выходные данные.
При использовании параметра PassThru этот командлет возвращает объект Process .
Примечания
Windows PowerShell включает следующие псевдонимы для Start-Process
:
saps
start
Собственные команды — это исполняемые файлы, установленные в операционной системе. Эти исполняемые файлы можно запускать из любой оболочки командной строки, например PowerShell. Обычно команда выполняется точно так же, как в bash
или cmd.exe
. Командлет Start-Process
можно использовать для выполнения любых собственных команд, но его следует использовать только при необходимости управлять выполнением команды.
По умолчанию Start-Process
запускает процесс асинхронно. Элемент управления мгновенно возвращается в PowerShell, даже если новый процесс по-прежнему запущен.
- В локальной системе запущенный процесс живет независимо от вызывающего процесса.
- В удаленной системе новый процесс завершается при завершении удаленного сеанса сразу после
Start-Process
выполнения команды. Поэтому вы не можете использоватьStart-Process
в удаленном сеансе, ожидая, что запущенный процесс перешел к сеансу.
Если необходимо использовать Start-Process
в удаленном сеансе, вызовите его с параметром Wait . Кроме того, можно использовать другие методы для создания нового процесса в удаленной системе.
При использовании параметра Start-Process
Wait ожидает завершения дерева обработки (процесса и всех его потомков) перед возвратом элемента управления. Это отличается от поведения командлета Wait-Process
, который ожидает завершения указанных процессов.
В Windows наиболее распространенным вариантом Start-Process
использования является использование параметра Wait для блокировки хода выполнения до завершения нового процесса. В системе, отличной от Windows, это редко требуется, так как поведение по умолчанию для приложений командной строки эквивалентно Start-Process -Wait
.
Этот командлет реализуется с помощью метода Start класса System.Diagnostics.Process. Дополнительные сведения об этом методе см. в разделе Process.Start Method.
Связанные ссылки
PowerShell