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]
[-Environment <hashtable>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Start-Process
[-FilePath] <string>
[[-ArgumentList] <string[]>]
[-WorkingDirectory <string>]
[-PassThru]
[-Verb <string>]
[-WindowStyle <ProcessWindowStyle>]
[-Wait]
[-Environment <hashtable>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
cmdlet은 Start-Process
로컬 컴퓨터에서 하나 이상의 프로세스를 시작합니다. 기본적으로 Start-Process
현재 프로세스에 정의된 모든 환경 변수를 상속하는 새 프로세스를 만듭니다.
프로세스에서 실행되는 프로그램을 지정하려면 실행 파일 또는 스크립트 파일 또는 컴퓨터의 프로그램을 사용하여 열 수 있는 파일을 입력합니다. 실행 불가능한 파일을 Start-Process
지정하는 경우 cmdlet과 유사하게 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
이 예제에서는 스플래팅을 사용하여 cmdlet에 매개 변수를 전달합니다. 자세한 내용은 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
이 예제에서는 PowerShell 프로세스에서 실행되는 파일인 powershell.exe
System.Diagnostics.ProcessStartInfo 개체를 만드는 데 사용합니다New-Object
. ProcessStartInfo 개체의 동사 속성은 파일을 실행하는 .exe
모든 프로세스와 함께 powershell.exe
Open 및 RunAs
동사를 사용할 수 있음을 보여 줍니다.
예제 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
자식 프로세스를 종료하지 않도록 하려면 . 다음 예제에서는 시작 세션을 닫은 후에도 활성 상태로 유지되는 Linux에서 PowerShell의 백그라운드 인스턴스를 시작합니다. 이 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
. 자세한 내용은 Wikipedia의 nohup 문서를 참조하세요.
예제 9: 프로세스에 대한 환경 변수 재정의
기본적으로 사용하는 Start-Process
경우 새 프로세스는 현재 세션과 동일한 환경 변수를 사용하여 만들어집니다. 환경 매개 변수를 사용하여 해당 변수의 값을 재정의할 수 있습니다.
이 예제에서는 환경 변수 FOO
가 값으로 foo
세션에 추가됩니다.
이 예제는 세 번 실행 Start-Process
하여 각 시간의 값을 FOO
반환합니다. 첫 번째 명령은 환경 변수를 재정의하지 않습니다. 두 번째 명령 FOO
에서 .로 설정됩니다 bar
. 세 번째 명령에서 이 명령 FOO
이 제거되는 <
$env:FOO = 'foo'
Start-Process pwsh -NoNewWindow -ArgumentList '-c', '$env:FOO'
Start-Process pwsh -NoNewWindow -ArgumentList '-c', '$env:FOO' -Environment @{
FOO = 'bar'
}
Start-Process pwsh -NoNewWindow -ArgumentList '-c', '$env:FOO' -Environment @{
FOO = $null
}
foo
bar
매개 변수
-ArgumentList
이 cmdlet이 프로세스를 시작할 때 사용할 매개 변수 또는 매개 변수 값을 지정합니다. 인수는 공백으로 구분된 인수가 있는 단일 문자열 또는 쉼표로 구분된 문자열 배열로 사용할 수 있습니다. cmdlet은 배열의 각 요소를 단일 공백으로 구분하여 배열을 단일 문자열로 조인합니다.
ArgumentList 값이 새 프로세스에 전달될 때 PowerShell 문자열의 외부 따옴표는 포함되지 않습니다. 매개 변수 또는 매개 변수 값에 공백이나 따옴표가 포함된 경우 이스케이프된 큰따옴표로 묶어야 합니다. 자세한 내용은 about_Quoting_Rules 참조하세요.
최상의 결과를 얻으려면 모든 인수와 필요한 따옴표 문자를 포함하는 단일 ArgumentList 값을 사용합니다.
형식: | String[] |
별칭: | Args |
Position: | 1 |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Confirm
cmdlet을 실행하기 전에 확인 메시지가 표시됩니다.
형식: | SwitchParameter |
별칭: | cf |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Credential
이 작업을 수행할 권한이 있는 사용자 계정을 지정합니다. 기본적으로 cmdlet은 현재 사용자의 자격 증명을 사용합니다.
User01 또는 Domain01\User01과 같은 사용자 이름을 입력하거나 cmdlet에서 생성된 PSCredential 개체를 Get-Credential
입력합니다. 사용자 이름을 입력하면 암호를 입력하라는 메시지가 표시됩니다.
자격 증명은 PSCredential 개체에 저장되고 암호는 SecureString으로 저장됩니다.
참고 항목
SecureString 데이터 보호에 대한 자세한 내용은 SecureString이 얼마나 안전한가요?를 참조하세요.
형식: | PSCredential |
별칭: | RunAs |
Position: | Named |
Default value: | Current user |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Environment
프로세스에 대해 재정의할 하나 이상의 환경 변수를 해시 테이블로 지정합니다. 환경 변수의 이름을 해시 테이블의 키 및 원하는 값으로 지정합니다. 환경 변수를 설정 해제하려면 해당 값을 .로 $null
지정합니다.
지정한 변수가 프로세스에서 대체됩니다. 환경 변수를 PATH
지정하면 이 매개 변수에서 지정된 값 뒤에 오는 값 $PSHOME
으로 바뀝 있습니다. Windows에서 명령은 컴퓨터 및 사용자 범위의 값을 PATH
새 값 뒤의 값에 추가합니다.
이 매개 변수는 PowerShell 7.4에 추가되었습니다.
형식: | Hashtable |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-FilePath
프로세스에서 실행되는 프로그램의 선택적 경로 및 파일 이름을 지정합니다. 컴퓨터의 프로그램과 연결된 실행 파일 또는 문서의 이름(.doc
예: .txt
파일)을 입력합니다. 이 매개 변수는 필수입니다.
시스템 명령에 해당하지 않는 파일 이름만 지정하는 경우 WorkingDirectory 매개 변수를 사용하여 경로를 지정합니다.
형식: | String |
별칭: | PSPath, Path |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-LoadUserProfile
이 cmdlet은 현재 사용자의 레지스트리 키에 HKEY_USERS
저장된 Windows 사용자 프로필을 로드한다는 것을 나타냅니다. 이 매개 변수는 Windows가 아닌 시스템에는 적용되지 않습니다.
이 매개 변수는 PowerShell 프로필에 영향을 주지 않습니다. 자세한 내용은 about_Profiles를 참조하세요.
형식: | SwitchParameter |
별칭: | Lup |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-NoNewWindow
현재 콘솔 창에서 새 프로세스를 시작합니다. 기본적으로 Windows에서 PowerShell은 새 창을 엽니다. Windows가 아닌 시스템에서는 새 창이 표시되지 않습니다.
동일한 명령에서는 NoNewWindow 및 WindowStyle 매개 변수를 사용할 수 없습니다.
이 매개 변수는 Windows가 아닌 시스템에는 적용되지 않습니다.
형식: | SwitchParameter |
별칭: | nnw |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-PassThru
cmdlet이 시작된 각 프로세스에 대한 프로세스 개체를 반환합니다. 기본적으로 이 cmdlet은 출력을 생성하지 않습니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-RedirectStandardError
파일을 지정합니다. 이 cmdlet은 프로세스에서 생성된 오류를 지정한 파일로 보냅니다. 경로 및 파일 이름을 입력합니다. 기본적으로 오류는 콘솔에 표시됩니다.
형식: | String |
별칭: | RSE |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-RedirectStandardInput
파일을 지정합니다. 이 cmdlet은 지정된 파일에서 입력을 읽습니다. 입력 파일의 경로와 파일 이름을 입력합니다. 기본적으로 프로세스는 키보드에서 해당 입력을 가져옵니다.
형식: | String |
별칭: | RSI |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-RedirectStandardOutput
파일을 지정합니다. 이 cmdlet은 프로세스에서 생성된 출력을 지정한 파일로 보냅니다. 경로 및 파일 이름을 입력합니다. 기본적으로 출력은 콘솔에 표시됩니다.
형식: | String |
별칭: | RSO |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-UseNewEnvironment
이 cmdlet은 프로세스에 지정된 새 환경 변수를 사용한다는 것을 나타냅니다. 기본적으로 시작 프로세스는 부모 프로세스에서 상속된 환경 변수를 사용하여 실행됩니다.
Windows에서 UseNewEnvironment를 사용하는 경우 새 프로세스는 컴퓨터 범위에 대해 정의된 기본 환경 변수만 포함하기 시작합니다. 이로 인해 SYSTEM으로 설정된 부작용 $env:USERNAME
이 있습니다. 사용자 범위의 변수는 포함되지 않습니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Verb
이 cmdlet이 프로세스를 시작할 때 사용할 동사를 지정합니다. 사용 가능한 동사는 프로세스에서 실행되는 파일의 파일 이름 확장명에서 결정됩니다.
다음 표에서는 몇 가지 일반적인 프로세스 파일 형식에 대한 동사를 보여 줍니다.
파일 형식 | 동사 |
---|---|
.cmd | Edit , Open , Print , RunAs RunAsUser |
.exe | Open , , RunAs RunAsUser |
.txt | Open , , Print PrintTo |
.wav | Open , Play |
프로세스에서 실행되는 파일과 함께 사용할 수 있는 동사를 찾으려면 cmdlet을 사용하여 New-Object
파일에 대한 System.Diagnostics.ProcessStartInfo 개체를 만듭니다. 사용 가능한 동사는 ProcessStartInfo 개체의 동사 속성에 있습니다. 자세한 내용은 예제를 참조하세요.
이 매개 변수는 Windows가 아닌 시스템에는 적용되지 않습니다.
형식: | String |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Wait
이 cmdlet은 지정된 프로세스와 해당 하위 항목이 완료될 때까지 기다렸다가 더 많은 입력을 수락했음을 나타냅니다. 이 매개 변수는 명령 프롬프트를 표시하지 않거나 프로세스가 완료될 때까지 창을 유지합니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-WhatIf
cmdlet이 실행될 경우 결과 동작을 표시합니다. cmdlet이 실행되지 않습니다.
이 매개 변수는 PowerShell 6.0에서 도입되었습니다.
형식: | SwitchParameter |
별칭: | wi |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-WindowStyle
새 프로세스에 사용되는 창의 상태를 지정합니다. 기본값은 Normal
입니다.
이 매개 변수에 허용되는 값은 다음과 같습니다.
Normal
Hidden
Minimized
Maximized
동일한 명령에서는 WindowStyle 및 NoNewWindow 매개 변수를 사용할 수 없습니다.
이 매개 변수는 Windows가 아닌 시스템에는 적용되지 않습니다. Windows가 아닌 시스템에서 사용하는 경우 새 창이 표시되지 않습니다.
형식: | ProcessWindowStyle |
허용되는 값: | Normal, Hidden, Minimized, Maximized |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-WorkingDirectory
새 프로세스를 시작할 위치를 지정합니다.
지정하지 않으면 cmdlet은 기본적으로 FilePath 매개 변수에 지정된 정규화된 위치로 설정됩니다. FilePath 매개 변수의 값이 정규화되지 않은 경우 기본값은 호출 프로세스의 현재 작업 디렉터리입니다.
와일드카드는 지원되지 않습니다. 경로에 와일드카드로 해석되는 문자가 포함되어서는 안 됩니다.
형식: | String |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
입력
None
개체를 이 cmdlet으로 파이프할 수 없습니다.
출력
None
기본적으로 이 cmdlet은 출력을 반환하지 않습니다.
PassThru 매개 변수를 사용하는 경우 이 cmdlet은 Process 개체를 반환합니다.
참고
PowerShell에는 다음 별칭이 포함됩니다.Start-Process
- 모든 플랫폼
saps
- Windows
start
네이티브 명령은 운영 체제에 설치된 실행 파일입니다. 이러한 실행 파일은 PowerShell과 같은 명령줄 셸에서 실행할 수 있습니다. 일반적으로 명령은 bash
또는 cmd.exe
와 같은 방식으로 실행합니다. cmdlet은 네이 Start-Process
티브 명령을 실행하는 데 사용할 수 있지만 명령이 실행되는 방법을 제어해야 하는 경우에만 사용해야 합니다.
Start-Process
는 Windows가 아닌 플랫폼에서 GUI 프로그램을 실행하는 데 유용합니다. 예를 들어 실행하여 GNOME Desktop 환경의 일반적인 그래픽 텍스트 편집기를 시작 Start-Process gedit
합니다.
기본적으로 Start-Process
프로세스를 비동기적으로 시작합니다. 새 프로세스가 계속 실행 중인 경우에도 컨트롤이 PowerShell로 즉시 반환됩니다.
- 로컬 시스템에서 시작된 프로세스는 호출 프로세스와 독립적으로 작동합니다.
- 원격 시스템에서는 명령 바로 다음에
Start-Process
원격 세션이 종료되면 새 프로세스가 종료됩니다. 따라서 시작된 프로세스가 세션보다 오래 지속될 것으로 예상되는 원격 세션에서는 사용할Start-Process
수 없습니다.
원격 세션에서 사용해야 Start-Process
하는 경우 Wait 매개 변수를 사용하여 호출합니다. 또는 다른 방법을 사용하여 원격 시스템에서 새 프로세스를 만들 수 있습니다.
Wait 매개 변수 Start-Process
를 사용하는 경우 프로세스 트리(프로세스 및 모든 하위 항목)가 종료될 때까지 기다린 후 컨트롤을 반환합니다. 지정된 프로세스만 종료될 때까지 기다리는 cmdlet의 Wait-Process
동작과 다릅니다.
Windows에서 가장 일반적인 사용 사례 Start-Process
는 Wait 매개 변수를 사용하여 새 프로세스가 종료될 때까지 진행률을 차단하는 것입니다. Windows가 아닌 시스템에서는 명령줄 애플리케이션의 기본 동작이 같으므로 이 동작이 Start-Process -Wait
거의 필요하지 않습니다.
이 cmdlet은 System.Diagnostics.Process 클래스의 Start 메서드를 사용하여 구현됩니다. 이 메서드에 대한 자세한 내용은 Process.Start 메서드를 참조 하세요.
관련 링크
PowerShell