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
В этом примере используется сплаттинг для передачи параметров командлету . Дополнительные сведения см. в разделе 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
можно использовать с 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. Create отсоединяемого процесса в 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 см. в разделе Как безопасно secure is 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 не является полным, по умолчанию используется текущий рабочий каталог вызывающего процесса.
Подстановочные знаки не поддерживаются. Путь не должен содержать символы, которые будут интерпретироваться как подстановочные знаки.
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 . Вы также можете использовать другие методы для создания нового процесса в удаленной системе.
При использовании параметра Wait ожидает выхода Start-Process
дерева процесса (процесса и всех его потомков) перед возвратом управления. Это отличается от поведения командлета Wait-Process
, который ожидает только завершения указанных процессов.
В Windows наиболее распространенным вариантом Start-Process
использования является использование параметра Wait для блокировки хода выполнения до завершения нового процесса. В системе, отличной от Windows, это редко требуется, так как поведение по умолчанию для приложений командной строки эквивалентно Start-Process -Wait
.
Этот командлет реализуется с помощью метода Start класса System.Diagnostics.Process . Дополнительные сведения об этом методе см. в разделе Метод Process.Start.