Start-Process
Запускает один или несколько процессов на локальном компьютере.
Синтаксис
Default (По умолчанию)
Start-Process
[-FilePath] <string>
[[-ArgumentList] <string[]>]
[-Credential <pscredential>]
[-WorkingDirectory <string>]
[-LoadUserProfile]
[-NoNewWindow]
[-PassThru]
[-RedirectStandardError <string>]
[-RedirectStandardInput <string>]
[-RedirectStandardOutput <string>]
[-WindowStyle <ProcessWindowStyle>]
[-Wait]
[-UseNewEnvironment]
[<CommonParameters>]
UseShellExecute
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.
Свойство команды 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`""
Параметры
-ArgumentList
Задает параметры или значения параметров, используемые при запуске этого командлета. Аргументы можно принимать в виде одной строки с аргументами, разделенными пробелами, или как массив строк, разделенных запятыми. Командлет объединяет массив в одну строку с каждым элементом массива, разделенным одним пробелом.
Внешние кавычки строк PowerShell не включаются, когда значения ArgumentList передаются в новый процесс. Если параметры или значения параметров содержат пробел или кавычки, они должны быть окружены экранируемыми двойными кавычками. Дополнительную информацию см. в разделе about_Quoting_Rules.
Для получения наилучших результатов используйте одно значение ArgumentList, содержащее все аргументы и все необходимые символы кавычки.
Свойства параметров
| Тип: | String[] |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
| Aliases: | Аргументы |
Наборы параметров
(All)
| Position: | 1 |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Credential
Указывает учетную запись пользователя, которая имеет разрешение на выполнение этого действия. По умолчанию командлет использует учетные данные текущего пользователя.
Введите имя пользователя, например User01 или Domain01\User01, или введите объект PSCredential, созданный командлетом Get-Credential. Если ввести имя пользователя, вам будет предложено ввести пароль.
Учетные данные хранятся в объекте PSCredential, а пароль хранится в виде SecureString.
Замечание
Дополнительные сведения о защите данных SecureString см. в разделе Как безопасно SecureString?.
Свойства параметров
| Тип: | PSCredential |
| Default value: | Current user |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
| Aliases: | Запуски |
Наборы параметров
Default
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-FilePath
Указывает необязательный путь и имя файла программы, которая выполняется в процессе. Введите имя исполняемого файла или документа, например .txt или .doc файла, связанного с программой на компьютере. Этот параметр является обязательным.
Если указать только имя файла, используйте параметр WorkingDirectory, чтобы указать путь.
Свойства параметров
| Тип: | String |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
| Aliases: | PSPath |
Наборы параметров
(All)
| Position: | 0 |
| Обязательно: | True |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-LoadUserProfile
Указывает, что этот командлет загружает профиль пользователя Windows, хранящийся в разделе реестра HKEY_USERS для текущего пользователя.
Этот параметр не влияет на профили PowerShell. Дополнительные сведения см. в about_Profiles.
Свойства параметров
| Тип: | SwitchParameter |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
| Aliases: | Lup |
Наборы параметров
Default
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-NoNewWindow
Запустите новый процесс в текущем окне консоли. По умолчанию в Windows PowerShell открывается новое окно.
В той же команде нельзя использовать параметры NoNewWindow и WindowStyle.
Свойства параметров
| Тип: | SwitchParameter |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
| Aliases: | Ссз |
Наборы параметров
Default
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-PassThru
Возвращает объект процесса для каждого процесса, запущенного командлетом. По умолчанию этот командлет не создает выходные данные.
Свойства параметров
| Тип: | SwitchParameter |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-RedirectStandardError
Указывает файл. Этот командлет отправляет все ошибки, созданные процессом, в указанный файл. Введите путь и имя файла. По умолчанию ошибки отображаются в консоли.
Свойства параметров
| Тип: | String |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
| Aliases: | РГП |
Наборы параметров
Default
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-RedirectStandardInput
Указывает файл. Этот командлет считывает входные данные из указанного файла. Введите путь и имя файла входного файла. По умолчанию процесс получает входные данные с клавиатуры.
Свойства параметров
| Тип: | String |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
| Aliases: | РСИ (индекс относительной силы) |
Наборы параметров
Default
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-RedirectStandardOutput
Указывает файл. Этот командлет отправляет выходные данные, созданные процессом, в указанный файл. Введите путь и имя файла. По умолчанию выходные данные отображаются в консоли.
Свойства параметров
| Тип: | String |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
| Aliases: | RSO |
Наборы параметров
Default
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-UseNewEnvironment
Указывает, что этот командлет использует новые переменные среды, указанные для процесса. По умолчанию запущенный процесс выполняется с переменными среды, унаследованными от родительского процесса.
Свойства параметров
| Тип: | SwitchParameter |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
Default
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Verb
Указывает команду, используемую при запуске этого командлета. Доступные команды определяются расширением имени файла, который выполняется в процессе.
В следующей таблице показаны команды для некоторых распространенных типов файлов процесса.
| Тип файла | Глаголы |
|---|---|
| .cmd |
Edit, , OpenPrint, RunAsRunAsUser |
| .exe |
Open, , RunAsRunAsUser |
| .txt |
Open, , PrintPrintTo |
| .wav |
Open, Play |
Чтобы найти команды, которые можно использовать с файлом, который выполняется в процессе, используйте командлет New-Object для создания объекта System.Diagnostics.ProcessStartInfo для файла. Доступные команды находятся в свойстве Verbs объекта ProcessStartInfo. Дополнительные сведения см. в примерах.
Свойства параметров
| Тип: | String |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
UseShellExecute
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-Wait
Указывает, что этот командлет ожидает завершения указанного процесса и его потомков перед принятием дополнительных входных данных. Этот параметр подавляет командную строку или сохраняет окно до завершения процессов.
Свойства параметров
| Тип: | SwitchParameter |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-WindowStyle
Указывает состояние окна, используемого для нового процесса. Значение по умолчанию — Normal.
Допустимые значения для этого параметра:
NormalHiddenMinimizedMaximized
Вы не можете использовать параметры WindowStyle и NoNewWindow в той же команде.
Свойства параметров
| Тип: | ProcessWindowStyle |
| Default value: | None |
| Допустимые значения: | Normal, Hidden, Minimized, Maximized |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-WorkingDirectory
Указывает расположение, в котором должен начинаться новый процесс. По умолчанию используется расположение запущенного исполняемого файла или документа. Подстановочные знаки не поддерживаются. Путь не должен содержать символы, которые будут интерпретироваться как подстановочные знаки.
Свойства параметров
| Тип: | String |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
CommonParameters
Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction и -WarningVariable. Дополнительные сведения см. в разделе about_CommonParameters.
Входные данные
None
Невозможно передать объекты в этот командлет.
Выходные данные
None
По умолчанию этот командлет не возвращает выходные данные.
Process
При использовании параметра PassThru этот командлет возвращает объект Process.
Примечания
Windows PowerShell включает следующие псевдонимы для Start-Process:
sapsstart
Собственные команды — это исполняемые файлы, установленные в операционной системе. Эти исполняемые файлы можно запускать из любой оболочки командной строки, например PowerShell. Обычно выполняется команда точно так же, как и в bash или cmd.exe. Командлет Start-Process можно использовать для выполнения любых собственных команд, но следует использовать только при необходимости управлять выполнением команды.
По умолчанию Start-Process запускает процесс асинхронно. Элемент управления мгновенно возвращается в PowerShell, даже если новый процесс по-прежнему запущен.
- В локальной системе запущенный процесс живет независимо от вызывающего процесса.
- В удаленной системе новый процесс завершается при завершении удаленного сеанса сразу после выполнения команды
Start-Process. Поэтому вы не можете использоватьStart-Processв удаленном сеансе, ожидая, что запущенный процесс перешел к сеансу.
Если необходимо использовать Start-Process в удаленном сеансе, вызовите его с помощью параметра Wait. Кроме того, можно использовать другие методы для создания нового процесса в удаленной системе.
При использовании параметра WaitStart-Process ожидает выхода дерева обработки (процесса и всех его потомков) перед возвратом элемента управления. Это отличается от поведения командлета Wait-Process, который ожидает завершения указанных процессов.
В Windows наиболее распространенным вариантом использования Start-Process является использование параметра wait для блокировки хода выполнения до завершения нового процесса. В системе, отличной от Windows, это редко требуется, так как поведение по умолчанию для приложений командной строки эквивалентно Start-Process -Wait.
Этот командлет реализуется с помощью метода запуска класса System.Diagnostics.Process. Дополнительные сведения об этом методе см. в разделе Process.Start Method.