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]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Start-Process
[-FilePath] <String>
[[-ArgumentList] <String[]>]
[-WorkingDirectory <String>]
[-PassThru]
[-Verb <String>]
[-WindowStyle <ProcessWindowStyle>]
[-Wait]
[-WhatIf]
[-Confirm]
[<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`""
Пример 8. Создание отсоединяемого процесса в Linux
В Windows Start-Process
создается независимый процесс, который продолжает работать независимо от запуска оболочки. На платформах, отличных от Windows, только что запущенный процесс присоединяется к оболочке, которая запущена. Если оболочка запуска закрыта, дочерний процесс завершается.
Чтобы избежать прекращения дочернего процесса на платформах Unix, можно объединить с Start-Process
nohup
. В следующем примере запускается фоновый экземпляр PowerShell в Linux, который остается в живых даже после закрытия сеанса запуска. Команда 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
как отсоединяемый процесс. Дополнительные сведения см. в статье nohup в Википедии.
Параметры
-ArgumentList
Задает параметры или значения параметров, используемые при запуске этого командлета. Аргументы можно принимать в виде одной строки с аргументами, разделенными пробелами, или как массив строк, разделенных запятыми. Командлет объединяет массив в одну строку с каждым элементом массива, разделенным одним пробелом.
Внешние кавычки строк PowerShell не включаются, когда значения ArgumentList передаются в новый процесс. Если параметры или значения параметров содержат пробел или кавычки, они должны быть окружены экранируемыми двойными кавычками. Дополнительные сведения см. в about_Quoting_Rules.
Для получения наилучших результатов используйте одно значение ArgumentList , содержащее все аргументы и все необходимые символы кавычки.
Type: | String[] |
Aliases: | Args |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
Запрос подтверждения перед выполнением командлета.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Credential
Указывает учетную запись пользователя с разрешением на выполнение этого действия. По умолчанию командлет использует учетные данные текущего пользователя.
Введите имя пользователя, например User01 или Domain01\User01, или введите объект PSCredential, созданный командлетомGet-Credential
. Если ввести имя пользователя, вам будет предложено ввести пароль.
Учетные данные хранятся в объекте 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
Указывает, что этот командлет загружает профиль пользователя Windows, хранящийся в HKEY_USERS
разделе реестра для текущего пользователя. Параметр не применяется к системам, отличным от 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
Возвращает объект процесса для каждого запущенного командлетом процесса По умолчанию этот командлет не создает выходные данные.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RedirectStandardError
Указывает файл. Этот командлет отправляет все ошибки, созданные процессом, в указанный файл. Введите путь и имя файла. По умолчанию все ошибки отображаются в консоли.
Type: | String |
Aliases: | RSE |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RedirectStandardInput
Указывает файл. Этот командлет считывает входные данные из указанного файла. Введите путь и имя файла входного файла. По умолчанию процесс получает входные данные с клавиатуры.
Type: | String |
Aliases: | RSI |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RedirectStandardOutput
Указывает файл. Этот командлет отправляет выходные данные, созданные процессом, в указанный файл. Введите путь и имя файла. По умолчанию выходные данные отображаются в консоли.
Type: | String |
Aliases: | RSO |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseNewEnvironment
Указывает, что этот командлет использует новые переменные среды, указанные для процесса. По умолчанию запущенный процесс выполняется с переменными среды, унаследованными от родительского процесса.
В Windows при использовании UseNewEnvironment новый процесс начинается только с переменными среды по умолчанию, определенными для область компьютера. Это имеет побочный эффект, установленный $env:USERNAME
для SYSTEM. Ни одна из переменных из область пользователя не включается.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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. Дополнительные сведения см. в примерах.
Параметр не применяется к системам, отличным от Windows.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Wait
Указывает, что этот командлет ожидает завершения указанного процесса и его потомков перед принятием дополнительных входных данных. Этот параметр подавляет командную строку или сохраняет окно до завершения процессов.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Показывает, что произойдет при запуске командлета. Командлет не выполняется.
Этот параметр появился в 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
Указывает расположение, в котором должен начинаться новый процесс.
Если этот командлет не указан, по умолчанию используется полное расположение, указанное в параметре FilePath . Если значение параметра FilePath не является полным, по умолчанию используется текущий рабочий каталог вызывающего процесса.
Wild карта s не поддерживаются. Путь не должен содержать символы, которые будут интерпретироваться как дикие карта.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Входные данные
None
Невозможно передать объекты в этот командлет.
Выходные данные
None
По умолчанию этот командлет не возвращает выходные данные.
При использовании параметра PassThru этот командлет возвращает объект Process .
Примечания
PowerShell включает следующие псевдонимы для Start-Process
:
- Все платформы
saps
- Windows
start
Собственные команды — это исполняемые файлы, установленные в операционной системе. Эти исполняемые файлы можно запускать из любой оболочки командной строки, например PowerShell. Обычно команда выполняется точно так же, как в bash
или cmd.exe
. Командлет Start-Process
можно использовать для выполнения любых собственных команд, но его следует использовать только при необходимости управлять выполнением команды.
Start-Process
полезно для запуска программ графического интерфейса на платформах, отличных от Windows. Например, запустите Start-Proces gedit
, чтобы запустить графический текстовый редактор, распространенный в средах РАБОЧЕГО стола GNOME.
По умолчанию 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
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по