Поделиться через


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 файл.

Start-Process -FilePath "Sort.exe" -RedirectStandardInput "Testsort.txt" -RedirectStandardOutput "Sorted.txt" -RedirectStandardError "SortError.txt" -UseNewEnvironment

Параметр UseNewEnvironment указывает, что процесс выполняется с собственными переменными среды.

Пример 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 как отсоединяемый процесс. Дополнительные сведения см. на странице man для nohup.

Параметры

-ArgumentList

Указывает параметры или значения параметров, используемые при запуске процесса с помощью этого командлета. Аргументы могут приниматься как одна строка с аргументами, разделенными пробелами, или как массив строк, разделенных запятыми.

Если параметры или значения параметров содержат пробел, их необходимо заключить в экранированные двойные кавычки. Дополнительные сведения см. в разделе about_Quoting_Rules.

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

Указывает, что этот командлет использует новые переменные среды, указанные для процесса. По умолчанию запущенный процесс выполняется с переменными среды, унаследованными от родительского процесса.

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 Открыть, воспроизвести

Чтобы найти команды, которые можно использовать с файлом, который выполняется в процессе, используйте 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, Hidden, Minimized и Развернуто. Значение по умолчанию — Normal.

Использовать параметры WindowStyle и NoNewWindow в одной и той же команде нельзя.

Параметр не применяется для систем, отличных от 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

Указывает расположение, в котором должен начаться новый процесс. По умолчанию используется расположение запускаемого исполняемого файла или документа. Подстановочные знаки не поддерживаются. Имя пути не должно содержать символы, которые будут интерпретироваться как подстановочные знаки.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Входные данные

None

В этот командлет нельзя передать входные данные.

Выходные данные

None, System.Diagnostics.Process

Этот командлет создает объект System.Diagnostics.Process , если указан параметр PassThru . В противном случае командлет не создает никаких выходных данных.

Примечания

  • Этот командлет реализуется с помощью метода Start класса System.Diagnostics.Process . Дополнительные сведения об этом методе см. в разделе Метод Process.Start.

  • В Windows при использовании UseNewEnvironment начинается новый процесс, содержащий только переменные среды по умолчанию, определенные для область компьютера. Это влияет на то, что $env:USERNAME для задано значение SYSTEM. Ни одна из переменных из область пользователя не включается.

  • В Windows наиболее распространенным вариантом Start-Process использования является использование параметра Wait для блокировки хода выполнения до завершения нового процесса. В системе, отличной от Windows, это редко требуется, так как поведение по умолчанию для приложений командной строки эквивалентно Start-Process -Wait.

  • При использовании Start-Process в системах, отличных от Windows, вы никогда не получаете новое окно терминала.