Start-Process
Memulai satu atau beberapa proses pada komputer lokal.
Sintaks
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>]
Deskripsi
Cmdlet Start-Process
memulai satu atau beberapa proses di komputer lokal. Secara default, Start-Process
membuat proses baru yang mewarisi semua variabel lingkungan yang ditentukan dalam proses saat ini.
Untuk menentukan program yang berjalan dalam proses, masukkan file atau file skrip yang dapat dieksekusi, atau file yang dapat dibuka menggunakan program di komputer. Jika Anda menentukan file yang tidak dapat dieksekusi, Start-Process
memulai program yang terkait dengan file, mirip dengan cmdlet Invoke-Item
.
Anda dapat menggunakan parameter Start-Process
untuk menentukan opsi, seperti memuat profil pengguna, memulai proses di jendela baru, atau menggunakan kredensial alternatif.
Contoh
Contoh 1: Memulai proses yang menggunakan nilai default
Contoh ini memulai proses yang menggunakan file Sort.exe
di folder saat ini. Perintah menggunakan semua nilai default, termasuk gaya jendela default, folder kerja, dan kredensial.
Start-Process -FilePath "sort.exe"
Contoh 2: Mencetak file teks
Contoh ini memulai proses yang mencetak file C:\PS-Test\MyFile.txt
.
Start-Process -FilePath "myfile.txt" -WorkingDirectory "C:\PS-Test" -Verb Print
Contoh 3: Memulai proses untuk mengurutkan item ke file baru
Contoh ini memulai proses yang mengurutkan item dalam file TestSort.txt
dan mengembalikan item yang diurutkan dalam file Sorted.txt
. Kesalahan apa pun ditulis ke file SortError.txt
. Parameter UseNewEnvironment menentukan bahwa proses berjalan dengan variabel lingkungannya sendiri.
$processOptions = @{
FilePath = "sort.exe"
RedirectStandardInput = "TestSort.txt"
RedirectStandardOutput = "Sorted.txt"
RedirectStandardError = "SortError.txt"
UseNewEnvironment = $true
}
Start-Process @processOptions
Contoh ini menggunakan splatting untuk meneruskan parameter ke cmdlet. Untuk informasi selengkapnya, lihat about_Splatting.
Contoh 4: Memulai proses di jendela yang dimaksimalkan
Contoh ini memulai proses Notepad.exe
. Ini memaksimalkan jendela dan mempertahankan jendela hingga proses selesai.
Start-Process -FilePath "notepad" -Wait -WindowStyle Maximized
Contoh 5: Memulai PowerShell sebagai administrator
Contoh ini memulai PowerShell menggunakan opsi Jalankan sebagai administrator.
Start-Process -FilePath "powershell" -Verb RunAs
Contoh 6: Menggunakan kata kerja yang berbeda untuk memulai proses
Contoh ini menunjukkan cara menemukan kata kerja yang dapat digunakan saat memulai proses. Kata kerja yang tersedia ditentukan oleh ekstensi nama file file yang berjalan dalam proses.
$startExe = New-Object System.Diagnostics.ProcessStartInfo -Args powershell.exe
$startExe.Verbs
open
runas
runasuser
Contoh menggunakan New-Object
untuk membuat objek System.Diagnostics.ProcessStartInfo untuk powershell.exe
, file yang berjalan dalam proses PowerShell. Properti Verbs dari objek ProcessStartInfo menunjukkan bahwa Anda dapat menggunakan kata kerja Open dan RunAs
dengan powershell.exe
, atau dengan proses apa pun yang menjalankan file .exe
.
Contoh 7: Menentukan argumen ke proses
Kedua perintah memulai penerjemah perintah Windows, mengeluarkan perintah dir
pada folder Program Files
. Karena nama folder ini berisi spasi, nilai perlu dikelilingi dengan tanda kutip yang lolos.
Perhatikan bahwa perintah pertama menentukan string sebagai ArgumentList. Perintah kedua adalah array string.
Start-Process -FilePath "$Env:ComSpec" -ArgumentList "/c dir `"%SystemDrive%\Program Files`""
Start-Process -FilePath "$Env:ComSpec" -ArgumentList "/c","dir","`"%SystemDrive%\Program Files`""
Contoh 8: Membuat proses yang dilepaskan di Linux
Di Windows, Start-Process
membuat proses independen yang tetap berjalan secara independen dari shell peluncuran. Pada platform non-Windows, proses yang baru dimulai dilampirkan ke shell yang diluncurkan. Jika shell peluncuran ditutup, proses anak dihentikan.
Untuk menghindari penghentian proses anak pada platform seperti Unix, Anda dapat menggabungkan Start-Process
dengan nohup
. Contoh berikut meluncurkan instans latar belakang PowerShell di Linux yang tetap hidup bahkan setelah Anda menutup sesi peluncuran. Perintah nohup
mengumpulkan output dalam nohup.out
file di direktori saat ini.
# Runs for 2 minutes and appends output to ./nohup.out
Start-Process nohup 'pwsh -NoProfile -c "1..120 | % { Write-Host . -NoNewline; sleep 1 }"'
Dalam contoh ini, Start-Process
menjalankan perintah linux nohup
, yang meluncurkan pwsh
sebagai proses yang dilepaskan. Untuk informasi selengkapnya, lihat artikel nohup di Wikipedia.
Contoh 9: Mengesampingkan variabel lingkungan untuk proses
Secara default, saat Anda menggunakan Start-Process
, proses baru dibuat dengan variabel lingkungan yang sama dengan sesi saat ini. Anda dapat menggunakan parameter Lingkungan untuk mengambil alih nilai variabel tersebut.
Dalam contoh ini, variabel lingkungan FOO
ditambahkan ke sesi dengan foo
sebagai nilai.
Contoh berjalan Start-Process
tiga kali, mengembalikan nilai FOO
setiap kali. Perintah pertama tidak mengambil alih variabel lingkungan. Pada perintah kedua, FOO
diatur ke bar
. Dalam perintah ketiga, FOO
diatur ke $null
, yang menghapusnya.
$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
Parameter
-ArgumentList
Menentukan parameter atau nilai parameter yang akan digunakan saat cmdlet ini memulai proses. Argumen dapat diterima sebagai string tunggal dengan argumen yang dipisahkan oleh spasi, atau sebagai array string yang dipisahkan oleh koma. Cmdlet menggabungkan array ke dalam satu string dengan setiap elemen array yang dipisahkan oleh satu spasi.
Kutipan luar string PowerShell tidak disertakan saat nilai ArgumentList diteruskan ke proses baru. Jika parameter atau nilai parameter berisi spasi atau tanda kutip, parameter atau parameter perlu dikelilingi dengan tanda kutip ganda yang lolos. Untuk informasi selengkapnya, lihat about_Quoting_Rules.
Untuk hasil terbaik, gunakan satu nilai ArgumentList yang berisi semua argumen dan karakter kutipan yang diperlukan.
Jenis: | String[] |
Alias: | Args |
Position: | 1 |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Confirm
Meminta konfirmasi sebelum menjalankan cmdlet.
Jenis: | SwitchParameter |
Alias: | cf |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Credential
Menentukan akun pengguna yang memiliki izin untuk melakukan tindakan ini. Secara default, cmdlet menggunakan kredensial pengguna saat ini.
Ketik nama pengguna, seperti User01 atau Domain01\User01, atau masukkan objek PSCredential yang dihasilkan oleh cmdlet Get-Credential
. Jika Anda mengetikkan nama pengguna, Anda akan diminta untuk memasukkan kata sandi.
Kredensial disimpan dalam objek PSCredential dan kata sandi disimpan sebagai SecureString.
Nota
Untuk informasi selengkapnya tentang perlindungan data SecureString, lihat Seberapa aman SecureString?.
Jenis: | PSCredential |
Alias: | RunAs |
Position: | Named |
Nilai default: | Current user |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Environment
Menentukan satu atau beberapa variabel lingkungan yang akan diambil alih untuk proses sebagai tabel hash. Tentukan nama variabel lingkungan sebagai kunci dalam tabel hash dan nilai yang diinginkan. Untuk membatalkan set variabel lingkungan, tentukan nilainya sebagai $null
.
Variabel yang ditentukan diganti dalam proses. Saat Anda menentukan variabel lingkungan PATH
, variabel tersebut diganti dengan nilai $PSHOME
diikuti dengan nilai yang ditentukan dari parameter ini. Di Windows, perintah menambahkan nilai untuk PATH
dalam cakupan Mesin dan Pengguna setelah nilai baru.
Parameter ini ditambahkan di PowerShell 7.4.
Jenis: | Hashtable |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-FilePath
Menentukan jalur opsional dan nama file program yang berjalan dalam proses. Masukkan nama file yang dapat dieksekusi atau dokumen, seperti file .txt
atau .doc
, yang terkait dengan program di komputer. Parameter ini diperlukan.
Jika Anda hanya menentukan nama file yang tidak sesuai dengan perintah sistem, gunakan parameter WorkingDirectory untuk menentukan jalur.
Jenis: | String |
Alias: | PSPath, Path |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | False |
Terima karakter wildcard: | False |
-LoadUserProfile
Menunjukkan bahwa cmdlet ini memuat profil pengguna Windows yang disimpan dalam kunci registri HKEY_USERS
untuk pengguna saat ini. Parameter tidak berlaku untuk sistem non-Windows.
Parameter ini tidak memengaruhi profil PowerShell. Untuk informasi selengkapnya, lihat about_Profiles.
Jenis: | SwitchParameter |
Alias: | Lup |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-NoNewWindow
Mulai proses baru di jendela konsol saat ini. Secara default di Windows, PowerShell membuka jendela baru. Pada sistem non-Windows, Anda tidak pernah mendapatkan jendela baru.
Anda tidak dapat menggunakan parameter NoNewWindow dan WindowStyle dalam perintah yang sama.
Parameter tidak berlaku untuk sistem non-Windows.
Jenis: | SwitchParameter |
Alias: | nnw |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-PassThru
Mengembalikan objek proses untuk setiap proses yang dimulai cmdlet. Secara default, cmdlet ini tidak menghasilkan output apa pun.
Jenis: | SwitchParameter |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-RedirectStandardError
Menentukan file. Cmdlet ini mengirimkan kesalahan apa pun yang dihasilkan oleh proses ke file yang Anda tentukan. Masukkan jalur dan nama file. Secara default, kesalahan ditampilkan di konsol.
Jenis: | String |
Alias: | RSE |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-RedirectStandardInput
Menentukan file. Cmdlet ini membaca input dari file yang ditentukan. Masukkan jalur dan nama file file input. Secara default, proses mendapatkan inputnya dari keyboard.
Jenis: | String |
Alias: | RSI |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-RedirectStandardOutput
Menentukan file. Cmdlet ini mengirimkan output yang dihasilkan oleh proses ke file yang Anda tentukan. Masukkan jalur dan nama file. Secara default, output ditampilkan di konsol.
Jenis: | String |
Alias: | RSO |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-UseNewEnvironment
Menunjukkan bahwa cmdlet ini menggunakan variabel lingkungan baru yang ditentukan untuk proses tersebut. Secara default, proses dimulai berjalan dengan variabel lingkungan yang diwarisi dari proses induk.
Di Windows, saat Anda menggunakan UseNewEnvironment, proses baru hanya dimulai berisi variabel lingkungan default yang ditentukan untuk cakupan Komputer. Ini memiliki efek samping bahwa $Env:USERNAME
diatur ke SYSTEM. Tidak ada variabel dari cakupan Pengguna yang disertakan.
Jenis: | SwitchParameter |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Verb
Menentukan kata kerja yang akan digunakan ketika cmdlet ini memulai proses. Kata kerja yang tersedia ditentukan oleh ekstensi nama file file yang berjalan dalam proses.
Tabel berikut ini memperlihatkan kata kerja untuk beberapa jenis file proses umum.
Jenis file | Verba |
---|---|
.Cmd |
Edit , Open , Print , RunAs , RunAsUser |
.exe |
Open , RunAs , RunAsUser |
.txt |
Open , Print , PrintTo |
.wav |
Open , Play |
Untuk menemukan kata kerja yang dapat digunakan dengan file yang berjalan dalam proses, gunakan cmdlet New-Object
untuk membuat System.Diagnostics.ProcessStartInfo objek untuk file. Kata kerja yang tersedia ada di properti Verbs objek ProcessStartInfo. Untuk detailnya, lihat contohnya.
Parameter tidak berlaku untuk sistem non-Windows.
Jenis: | String |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-Wait
Menunjukkan bahwa cmdlet ini menunggu proses yang ditentukan dan turunannya selesai sebelum menerima lebih banyak input. Parameter ini menekan prompt perintah atau mempertahankan jendela hingga proses selesai.
Jenis: | SwitchParameter |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-WhatIf
Menunjukkan apa yang akan terjadi jika cmdlet berjalan. Cmdlet tidak dijalankan.
Parameter ini diperkenalkan di PowerShell 6.0.
Jenis: | SwitchParameter |
Alias: | wi |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-WindowStyle
Menentukan status jendela yang digunakan untuk proses baru. Nilai defaultnya adalah Normal
.
Nilai yang dapat diterima untuk parameter ini adalah:
Normal
Hidden
Minimized
Maximized
Anda tidak dapat menggunakan parameter WindowStyle dan NoNewWindow dalam perintah yang sama.
Parameter tidak berlaku untuk sistem non-Windows. Saat menggunakan pada sistem non-Windows, Anda tidak pernah mendapatkan jendela baru.
Jenis: | ProcessWindowStyle |
Nilai yang diterima: | Normal, Hidden, Minimized, Maximized |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
-WorkingDirectory
Menentukan lokasi tempat proses baru harus dimulai.
Ketika tidak ditentukan, cmdlet default ke lokasi yang sepenuhnya memenuhi syarat yang ditentukan dalam parameter FilePath. Jika nilai parameter FilePath tidak sepenuhnya memenuhi syarat, nilai tersebut default ke direktori kerja saat ini dari proses panggilan.
Kartubebas tidak didukung. Jalur tidak boleh berisi karakter yang akan ditafsirkan sebagai kartubebas.
Jenis: | String |
Position: | Named |
Nilai default: | None |
Diperlukan: | False |
Terima input alur: | False |
Terima karakter wildcard: | False |
Input
None
Anda tidak dapat menyalurkan objek ke cmdlet ini.
Output
None
Secara default, cmdlet ini tidak mengembalikan output.
Saat Anda menggunakan parameter PassThru, cmdlet ini mengembalikan objek Proses.
Catatan
PowerShell menyertakan alias berikut untuk Start-Process
:
- Semua platform
saps
- Windows
start
Perintah asli adalah file yang dapat dieksekusi yang diinstal dalam sistem operasi. Executable ini dapat dijalankan dari shell baris perintah apa pun, seperti PowerShell. Biasanya Anda menjalankan perintah persis seperti yang Anda lakukan di bash
atau cmd.exe
. Cmdlet Start-Process
dapat digunakan untuk menjalankan perintah asli apa pun, tetapi hanya boleh digunakan ketika Anda perlu mengontrol bagaimana perintah dijalankan.
Start-Process
berguna untuk menjalankan program GUI pada platform non-Windows. Misalnya, jalankan Start-Process gedit
untuk meluncurkan editor teks grafis umum lingkungan GNOME Desktop.
Secara default, Start-Process
meluncurkan proses secara asinkron. Kontrol langsung dikembalikan ke PowerShell meskipun proses baru masih berjalan.
- Pada sistem lokal, proses yang diluncurkan hidup secara independen dari proses panggilan.
- Pada sistem jarak jauh, proses baru dihentikan ketika sesi jarak jauh berakhir, segera mengikuti perintah
Start-Process
. Oleh karena itu, Anda tidak dapat menggunakanStart-Process
dalam sesi jarak jauh yang mengharapkan proses yang diluncurkan untuk mengungguli sesi.
Jika Anda perlu menggunakan Start-Process
dalam sesi jarak jauh, panggil dengan parameter Tunggu. Atau Anda dapat menggunakan metode lain untuk membuat proses baru pada sistem jarak jauh.
Saat menggunakan parameter Wait, Start-Process
menunggu pohon proses (proses dan semua turunannya) keluar sebelum mengembalikan kontrol. Ini berbeda dari perilaku cmdlet Wait-Process
, yang hanya menunggu proses yang ditentukan keluar.
Di Windows, kasus penggunaan yang paling umum untuk Start-Process
adalah menggunakan parameter Tunggu untuk memblokir kemajuan hingga proses baru keluar. Pada sistem non-Windows, ini jarang diperlukan karena perilaku default untuk aplikasi baris perintah setara dengan Start-Process -Wait
.
Cmdlet ini diimplementasikan menggunakan metode Mulai kelas System.Diagnostics.Process. Untuk informasi selengkapnya tentang metode ini, lihat metode Process.Start.