Start-Process
Memulai satu atau beberapa proses pada komputer lokal.
Sintaks
Default (Default)
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>]
UseShellExecute
Start-Process
[-FilePath] <String>
[[-ArgumentList] <String[]>]
[-WorkingDirectory <String>]
[-PassThru]
[-Verb <String>]
[-WindowStyle <ProcessWindowStyle>]
[-Wait]
[-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 dengan menggunakan program pada 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
$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 lebih banyak informasi, 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 dengan 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 ini 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 .exe file.
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 halaman manual untuk nohup.
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 lebih lanjut, lihat about_Quoting_Rules.
Untuk hasil terbaik, gunakan satu nilai ArgumentList yang berisi semua argumen dan karakter kutipan yang diperlukan.
Properti parameter
| Jenis: | String[] |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | Argumen |
Kumpulan parameter
(All)
| Position: | 1 |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-Confirm
Meminta konfirmasi sebelum menjalankan cmdlet.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | Cf |
Kumpulan parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | 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
Nota
Untuk informasi selengkapnya tentang perlindungan data SecureString, lihat Seberapa aman SecureString?.
Properti parameter
| Jenis: | PSCredential |
| Nilai default: | Current user |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | RunAs |
Kumpulan parameter
Default
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-FilePath
Menentukan jalur opsional dan nama file program yang berjalan dalam proses. Masukkan nama file yang dapat dieksekusi atau dokumen, seperti file atau .txt.doc atau, yang terkait dengan program di komputer. Parameter ini diperlukan.
Jika Anda hanya menentukan nama file, gunakan parameter
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | PSPath, Jalur |
Kumpulan parameter
(All)
| Position: | 0 |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-LoadUserProfile
Menunjukkan bahwa cmdlet ini memuat profil pengguna Windows yang disimpan dalam kunci registri HKEY_USERS untuk pengguna saat ini. Parameter ini tidak berlaku untuk sistem non-Windows.
Parameter ini tidak memengaruhi profil PowerShell. Untuk informasi selengkapnya, lihat about_Profiles.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | Lup |
Kumpulan parameter
Default
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | 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
Parameter ini tidak berlaku untuk sistem non-Windows.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | Arah baratlaut |
Kumpulan parameter
Default
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-PassThru
Mengembalikan objek proses untuk setiap proses yang dimulai cmdlet. Secara default, cmdlet ini tidak menghasilkan output apa pun.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Kumpulan parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | 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.
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | RSE |
Kumpulan parameter
Default
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | 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.
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | RSI |
Kumpulan parameter
Default
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | 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.
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | RSO |
Kumpulan parameter
Default
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | 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 diatur $env:USERNAME ke SISTEM. Tidak ada variabel dari cakupan Pengguna yang disertakan.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Kumpulan parameter
Default
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | 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 | Kata kerja |
|---|---|
| .cmd | Edit, Buka, Cetak, RunAs, RunAsUser |
| .exe | Buka, RunAs, RunAsUser |
| .txt | Buka, Cetak, Cetak Ke |
| .wav | Buka, Putar |
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 ini tidak berlaku untuk sistem non-Windows.
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Kumpulan parameter
UseShellExecute
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | 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.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Kumpulan parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-WhatIf
Menunjukkan apa yang akan terjadi ketika cmdlet dijalankan. Cmdlet tidak dijalankan.
Parameter ini diperkenalkan di PowerShell 6.0.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | wi |
Kumpulan parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-WindowStyle
Menentukan status jendela yang digunakan untuk proses baru. Nilai yang dapat diterima untuk parameter ini adalah: Normal , Tersembunyi , Yang Diminimalkan, dan Dimaksimalkan . Nilai defaultnya adalah Normal.
Anda tidak dapat menggunakan parameter
Parameter ini tidak berlaku untuk sistem non-Windows. Saat menggunakan pada sistem non-Windows, Anda tidak pernah mendapatkan jendela baru.
Properti parameter
| Jenis: | ProcessWindowStyle |
| Nilai default: | None |
| Nilai yang diterima: | Normal, Hidden, Minimized, Maximized |
| Mendukung wildcard: | False |
| DontShow: | False |
Kumpulan parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-WorkingDirectory
Menentukan lokasi tempat proses baru harus dimulai. Defaultnya adalah lokasi file atau dokumen yang dapat dieksekusi yang sedang dimulai. Kartubebas tidak didukung. Nama jalur tidak boleh berisi karakter yang akan ditafsirkan sebagai karakter pengganti.
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Kumpulan parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
CommonParameters
Cmdlet ini mendukung parameter umum: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, dan -WarningVariable. Untuk informasi selengkapnya, lihat about_CommonParameters.
Input
None
Anda tidak dapat menyalurkan input ke cmdlet ini.
Output
None, System.Diagnostics.Process
Cmdlet ini menghasilkan objek
Catatan
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-Processdalam sesi jarak jauh yang mengharapkan proses yang diluncurkan bertahan lebih lama dari 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 dengan menggunakan metode Mulai