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]
     [-WhatIf]
     [-Confirm]
     [<CommonParameters>]
Start-Process
     [-FilePath] <String>
     [[-ArgumentList] <String[]>]
     [-WorkingDirectory <String>]
     [-PassThru]
     [-Verb <String>]
     [-WindowStyle <ProcessWindowStyle>]
     [-Wait]
     [-WhatIf]
     [-Confirm]
     [<CommonParameters>]

Deskripsi

Start-Process Cmdlet 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 pada komputer. Jika Anda menentukan file yang tidak dapat dieksekusi, Start-Process memulai program yang terkait dengan file , mirip Invoke-Item dengan cmdlet .

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 Sort.exe file 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 C:\PS-Test\MyFile.txt file.

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 TestSort.txt file dan mengembalikan item yang diurutkan dalam Sorted.txt file. Kesalahan apa pun ditulis ke SortError.txt file. 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 percikan untuk meneruskan parameter ke cmdlet. Untuk informasi selengkapnya, lihat about_Splatting.

Contoh 4: Memulai proses dalam jendela yang dimaksimalkan

Contoh ini memulai Notepad.exe proses. Ini memaksimalkan jendela dan mempertahankan jendela sampai proses selesai.

Start-Process -FilePath "notepad" -Wait -WindowStyle Maximized

Contoh 5: Mulai 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 dari file yang berjalan dalam proses.

$startExe = New-Object System.Diagnostics.ProcessStartInfo -Args powershell.exe
$startExe.verbs

open
runas
runasuser

Contohnya menggunakan New-Object untuk membuat objek System.Diagnostics.ProcessStartInfo untuk powershell.exe, file yang berjalan dalam proses PowerShell. Properti Kata Kerja dari objek ProcessStartInfo menunjukkan bahwa Anda dapat menggunakan buka dan RunAs kata kerja 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 dir perintah pada Program Files folder. 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: Jalankan perintah sebagai Administrator menggunakan kredensial alternatif

Di Windows, Anda dapat menjalankan Start-Process -Verb RunAs untuk memulai proses dengan izin yang ditingkatkan. Ini meningkatkan konteks pengguna saat ini. Parameter Info masuk memungkinkan Anda menentukan nama pengguna dan kata sandi alternatif, memungkinkan Anda memulai proses dalam konten pengguna yang berbeda. Namun, parameter Kredensial dan Kata Kerja tidak dapat digunakan bersama-sama.

Untuk memulai proses dengan hak yang ditingkatkan, menggunakan kredensial alternatif, Anda harus terlebih dahulu memulai PowerShell menggunakan kredensial alternatif, lalu menggunakan Start-Process untuk memulai proses dengan hak yang ditingkatkan.

$cred = Get-Credential
$args = '-noprofile -command "Start-Process cmd.exe -Verb RunAs -args /k"'
Start-Process pwsh.exe -Credential $cred -WindowStyle Hidden -ArgumentList $args

Contoh dimulai cmd.exe dengan izin yang ditingkatkan dari sesi PowerShell yang berjalan di bawah kredensial alternatif.

Contoh 9: Membuat proses yang dilepas di Linux

Pada 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 file nohup.out 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 diluncurkan pwsh sebagai proses yang dilepaskan. Untuk informasi selengkapnya, lihat halaman pria 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 tersebut 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.

Type:String[]
Aliases:Args
Position:1
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

Meminta Anda mengonfirmasi sebelum menjalankan cmdlet.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters: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 Get-Credential cmdlet . Jika Anda mengetikkan nama pengguna, Anda akan diminta untuk memasukkan kata sandi.

Kredensial disimpan dalam objek PSCredential dan kata sandi disimpan sebagai SecureString.

Catatan

Untuk informasi selengkapnya tentang perlindungan data SecureString , lihat Seberapa aman SecureString?.

Type:PSCredential
Aliases:RunAs
Position:Named
Default value:Current user
Accept pipeline input:False
Accept wildcard characters:False

-FilePath

Menentukan jalur opsional dan nama file program yang berjalan dalam proses. Masukkan nama file yang dapat dieksekusi atau dokumen, seperti .txt file atau .doc , yang terkait dengan program di komputer. Parameter ini diperlukan.

Jika Anda hanya menentukan nama file, gunakan parameter WorkingDirectory untuk menentukan jalur.

Type:String
Aliases:PSPath, Path
Position:0
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-LoadUserProfile

Menunjukkan bahwa cmdlet ini memuat profil pengguna Windows yang disimpan dalam HKEY_USERS kunci registri untuk pengguna saat ini. Parameter tidak berlaku untuk sistem non-Windows.

Parameter ini tidak memengaruhi profil PowerShell. Untuk informasi selengkapnya, lihat about_Profiles.

Type:SwitchParameter
Aliases:Lup
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters: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.

Type:SwitchParameter
Aliases:nnw
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-PassThru

Mengembalikan objek proses untuk setiap proses yang dimulai cmdlet. Secara default, cmdlet ini tidak menghasilkan output apa pun.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters: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.

Type:String
Aliases:RSE
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters: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.

Type:String
Aliases:RSI
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters: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.

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

-UseNewEnvironment

Menunjukkan bahwa cmdlet ini menggunakan variabel lingkungan baru yang ditentukan untuk proses tersebut. Secara default, proses yang dimulai berjalan dengan variabel lingkungan yang diwarisi dari proses induk.

Di Windows, saat Anda menggunakan UseNewEnvironment, proses baru hanya mulai berisi variabel lingkungan default yang ditentukan untuk cakupan Mesin . Ini memiliki efek samping yang $env:USERNAME diatur ke SYSTEM. Tidak ada variabel dari cakupan Pengguna yang disertakan.

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

-Verb

Menentukan kata kerja yang akan digunakan ketika cmdlet ini memulai proses. Kata kerja yang tersedia ditentukan oleh ekstensi nama file dari 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 New-Object cmdlet untuk membuat objek System.Diagnostics.ProcessStartInfo untuk file. Kata kerja yang tersedia ada di properti Kata Kerja dari objek ProcessStartInfo . Untuk detailnya, lihat contohnya.

Parameter tidak berlaku untuk sistem non-Windows.

Type:String
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters: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.

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

-WhatIf

Menunjukkan apa yang akan terjadi jika cmdlet berjalan. Cmdlet tidak dijalankan.

Parameter ini diperkenalkan di PowerShell 6.0.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters: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.

Type:ProcessWindowStyle
Accepted values:Normal, Hidden, Minimized, Maximized
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-WorkingDirectory

Menentukan lokasi tempat proses baru harus dimulai. Defaultnya adalah lokasi file atau dokumen yang dapat dieksekusi yang sedang dimulai. Kartubebas tidak didukung. Jalur tidak boleh berisi karakter yang akan ditafsirkan sebagai kartubebas.

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

Input

None

Anda tidak dapat menyalurkan input ke cmdlet ini.

Output

None, System.Diagnostics.Process

Cmdlet ini menghasilkan objek System.Diagnostics.Process , jika Anda menentukan parameter PassThru . Jika tidak, cmdlet ini tidak mengembalikan output apa pun.

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. Start-Process Cmdlet 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-Proces gedit untuk meluncurkan editor teks grafis umum lingkungan Desktop GNOME.

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 Start-Process perintah . Oleh karena itu, Anda tidak dapat menggunakan Start-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 Tunggu , Start-Process menunggu pohon proses (proses dan semua turunannya) keluar sebelum mengembalikan kontrol. Ini berbeda dari Wait-Process perilaku cmdlet, yang hanya menunggu proses yang ditentukan keluar.

Di Windows, kasus penggunaan yang paling umum adalah Start-Process 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.