Start-Job
Memulai pekerjaan latar belakang PowerShell.
Sintaks
Start-Job
[-Name <String>]
[-ScriptBlock] <ScriptBlock>
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[[-InitializationScript] <ScriptBlock>]
[-RunAs32]
[-PSVersion <Version>]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Start-Job
[-DefinitionName] <String>
[[-DefinitionPath] <String>]
[[-Type] <String>]
[<CommonParameters>]
Start-Job
[-Name <String>]
[-Credential <PSCredential>]
[-FilePath] <String>
[-Authentication <AuthenticationMechanism>]
[[-InitializationScript] <ScriptBlock>]
[-RunAs32]
[-PSVersion <Version>]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Start-Job
[-Name <String>]
[-Credential <PSCredential>]
-LiteralPath <String>
[-Authentication <AuthenticationMechanism>]
[[-InitializationScript] <ScriptBlock>]
[-RunAs32]
[-PSVersion <Version>]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Deskripsi
Start-Job
Cmdlet memulai pekerjaan latar belakang PowerShell di komputer lokal.
Pekerjaan latar belakang PowerShell menjalankan perintah tanpa berinteraksi dengan sesi saat ini. Ketika Anda memulai pekerjaan latar belakang, objek pekerjaan segera kembali, meskipun pekerjaan membutuhkan waktu lama untuk diselesaikan. Anda dapat terus bekerja dalam sesi tanpa gangguan saat pekerjaan berjalan.
Objek pekerjaan berisi informasi yang berguna tentang pekerjaan, tetapi tidak berisi hasil pekerjaan.
Setelah pekerjaan selesai, gunakan Receive-Job
cmdlet untuk mendapatkan hasil pekerjaan. Untuk informasi selengkapnya tentang pekerjaan latar belakang, lihat about_Jobs.
Untuk menjalankan pekerjaan latar belakang di komputer jarak jauh, gunakan parameter AsJob yang tersedia di banyak cmdlet, atau gunakan Invoke-Command
cmdlet untuk menjalankan Start-Job
perintah di komputer jarak jauh. Untuk informasi selengkapnya, lihat about_Remote_Jobs.
Mulai dari PowerShell 3.0, Start-Job
dapat memulai instans jenis pekerjaan kustom, seperti pekerjaan terjadwal. Untuk informasi tentang cara menggunakan Start-Job
untuk memulai pekerjaan dengan jenis kustom, lihat dokumen bantuan untuk fitur jenis pekerjaan.
Direktori kerja default untuk pekerjaan dikodekan secara permanen. Default Windows adalah $HOME\Documents
dan di Linux atau macOS defaultnya adalah $HOME
. Kode skrip yang berjalan di pekerjaan latar belakang perlu mengelola direktori kerja sesuai kebutuhan.
Contoh
Contoh 1: Memulai pekerjaan latar belakang
Contoh ini memulai pekerjaan latar belakang yang berjalan di komputer lokal.
Start-Job -ScriptBlock { Get-Process -Name powershell }
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
1 Job1 BackgroundJob Running True localhost Get-Process -Name powershell
Start-Job
menggunakan parameter ScriptBlock untuk dijalankan Get-Process
sebagai pekerjaan latar belakang. Parameter Nama menentukan untuk menemukan proses PowerShell, powershell
. Informasi pekerjaan ditampilkan dan PowerShell kembali ke perintah saat pekerjaan berjalan di latar belakang.
Untuk melihat output pekerjaan, gunakan Receive-Job
cmdlet . Contohnya,Receive-Job -Id 1
.
Contoh 2: Memulai pekerjaan menggunakan Invoke-Command
Contoh ini menjalankan pekerjaan di beberapa komputer. Pekerjaan disimpan dalam variabel dan dijalankan dengan menggunakan nama variabel pada baris perintah PowerShell.
$jobWRM = Invoke-Command -ComputerName (Get-Content -Path C:\Servers.txt) -ScriptBlock {
Get-Service -Name WinRM } -JobName WinRM -ThrottleLimit 16 -AsJob
Pekerjaan yang menggunakan Invoke-Command
dibuat dan disimpan dalam $jobWRM
variabel. Invoke-Command
menggunakan parameter ComputerName untuk menentukan komputer tempat pekerjaan berjalan. Get-Content
mendapatkan nama server dari C:\Servers.txt
file.
Parameter ScriptBlock menentukan perintah yang Get-Service
mendapatkan layanan WinRM . Parameter JobName menentukan nama yang mudah diingat untuk pekerjaan tersebut, WinRM. Parameter ThrottleLimit membatasi jumlah perintah bersamaan menjadi 16. Parameter AsJob memulai pekerjaan latar belakang yang menjalankan perintah di server.
Contoh 3: Mendapatkan informasi pekerjaan
Contoh ini mendapatkan informasi tentang pekerjaan dan menampilkan hasil pekerjaan lengkap yang dijalankan di komputer lokal.
$j = Start-Job -ScriptBlock { Get-WinEvent -Log System } -Credential Domain01\User01
$j | Select-Object -Property *
State : Completed
HasMoreData : True
StatusMessage :
Location : localhost
Command : Get-WinEvent -Log System
JobStateInfo : Completed
Finished : System.Threading.ManualResetEvent
InstanceId : 27ce3fd9-40ed-488a-99e5-679cd91b9dd3
Id : 18
Name : Job18
ChildJobs : {Job19}
PSBeginTime : 8/8/2019 14:41:57
PSEndTime : 8/8/2019 14:42:07
PSJobTypeName : BackgroundJob
Output : {}
Error : {}
Progress : {}
Verbose : {}
Debug : {}
Warning : {}
Information : {}
Start-Job
menggunakan parameter ScriptBlock untuk menjalankan perintah yang menentukan Get-WinEvent
untuk mendapatkan log Sistem. Parameter Kredensial menentukan akun pengguna domain dengan izin untuk menjalankan pekerjaan di komputer. Objek pekerjaan disimpan dalam $j
variabel .
Objek dalam $j
variabel dikirimkan alur ke Select-Object
. Parameter Properti menentukan tanda bintang (*
) untuk menampilkan semua properti objek pekerjaan.
Contoh 4: Menjalankan skrip sebagai pekerjaan latar belakang
Dalam contoh ini, skrip di komputer lokal dijalankan sebagai pekerjaan latar belakang.
Start-Job -FilePath C:\Scripts\Sample.ps1
Start-Job
menggunakan parameter FilePath untuk menentukan file skrip yang disimpan di komputer lokal.
Contoh 5: Mendapatkan proses menggunakan pekerjaan latar belakang
Contoh ini menggunakan pekerjaan latar belakang untuk mendapatkan proses yang ditentukan berdasarkan nama.
Start-Job -Name PShellJob -ScriptBlock { Get-Process -Name PowerShell }
Start-Job
menggunakan parameter Nama untuk menentukan nama pekerjaan yang mudah diingat, PShellJob. Parameter ScriptBlock menentukan Get-Process
untuk mendapatkan proses dengan nama PowerShell.
Contoh 6: Mengumpulkan dan menyimpan data dengan menggunakan pekerjaan latar belakang
Contoh ini memulai pekerjaan yang mengumpulkan sejumlah besar data peta lalu menyimpannya dalam .tif
file.
Start-Job -Name GetMappingFiles -InitializationScript {Import-Module -Name MapFunctions} -ScriptBlock {
Get-Map -Name * | Set-Content -Path D:\Maps.tif } -RunAs32
Start-Job
menggunakan parameter Nama untuk menentukan nama pekerjaan yang mudah diingat, GetMappingFiles. Parameter InitializationScript menjalankan blok skrip yang mengimpor modul MapFunctions . Parameter ScriptBlock berjalan Get-Map
dan Set-Content
menyimpan data di lokasi yang ditentukan oleh parameter Jalur. Parameter RunAs32 menjalankan proses sebagai 32-bit, bahkan pada sistem operasi 64-bit.
Contoh 7: Meneruskan input ke pekerjaan latar belakang
Contoh ini menggunakan $input
variabel otomatis untuk memproses objek input. Gunakan Receive-Job
untuk melihat output pekerjaan.
Start-Job -ScriptBlock { Get-Content -Path $input } -InputObject "C:\Servers.txt"
Receive-Job -Name Job45 -Keep
Server01
Server02
Server03
Server04
Start-Job
menggunakan parameter ScriptBlock untuk berjalan Get-Content
dengan $input
variabel otomatis. Variabel $input
mendapatkan objek dari parameter InputObject . Receive-Job
menggunakan parameter Nama untuk menentukan pekerjaan dan menghasilkan hasilnya. Parameter Keep menyimpan output pekerjaan sehingga dapat dilihat lagi selama sesi PowerShell.
Contoh 8: Gunakan parameter ArgumentList untuk menentukan array
Contoh ini menggunakan parameter ArgumentList untuk menentukan array argumen. Array adalah daftar nama proses yang dipisahkan koma.
Start-Job -ScriptBlock { Get-Process -Name $args } -ArgumentList powershell, pwsh, notepad
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
1 Job1 BackgroundJob Running True localhost Get-Process -Name $args
Start-Job
Cmdlet menggunakan parameter ScriptBlock untuk menjalankan perintah. Get-Process
menggunakan parameter Nama untuk menentukan variabel $args
otomatis . Parameter ArgumentList meneruskan array nama proses ke $args
. Nama proses powershell, pwsh, dan notepad adalah proses yang berjalan di komputer lokal.
Untuk melihat output pekerjaan, gunakan Receive-Job
cmdlet . Contohnya,Receive-Job -Id 1
.
Parameter
-ArgumentList
Menentukan array argumen, atau nilai parameter, untuk skrip yang ditentukan oleh parameter FilePath atau perintah yang ditentukan dengan parameter ScriptBlock .
Argumen harus diteruskan ke ArgumentList sebagai argumen array dimensi tunggal. Misalnya, daftar yang dipisahkan koma. Untuk informasi selengkapnya tentang perilaku ArgumentList, lihat about_Splatting.
Type: | Object[] |
Aliases: | Args |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Authentication
Menentukan mekanisme yang digunakan untuk mengautentikasi kredensial pengguna.
Nilai yang dapat diterima untuk parameter ini adalah sebagai berikut:
- Default
- Dasar
- Credssp
- digest
- Kerberos
- Negosiasi
- NegosiasiWithImplicitCredential
Nilai default-nya adalah Default.
Autentikasi CredSSP hanya tersedia di Windows Vista, Windows Server 2008, dan versi sistem operasi Windows yang lebih baru.
Untuk informasi selengkapnya tentang nilai parameter ini, lihat AuthenticationMechanism.
Perhatian
Autentikasi Penyedia Dukungan Keamanan Kredensial (CredSSP), di mana kredensial pengguna diteruskan ke komputer jarak jauh untuk diautentikasi, dirancang untuk perintah yang memerlukan autentikasi pada lebih dari satu sumber daya, seperti mengakses berbagi jaringan jarak jauh. Mekanisme ini meningkatkan risiko keamanan operasi jarak jauh. Jika komputer jarak jauh disusupi, kredensial yang diteruskan ke komputer jarak jauh dapat digunakan untuk mengontrol sesi jaringan.
Type: | AuthenticationMechanism |
Accepted values: | Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos |
Position: | Named |
Default value: | Default |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Credential
Menentukan akun pengguna yang memiliki izin untuk melakukan tindakan ini. Jika parameter Kredensial tidak ditentukan, perintah 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 |
Position: | Named |
Default value: | Current user |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-DefinitionName
Menentukan nama definisi pekerjaan yang dimulai cmdlet ini. Gunakan parameter ini untuk memulai jenis pekerjaan kustom yang memiliki nama definisi, seperti pekerjaan terjadwal.
Ketika Anda menggunakan Start-Job
untuk memulai instans pekerjaan terjadwal, pekerjaan segera dimulai, terlepas dari pemicu pekerjaan atau opsi pekerjaan. Instans pekerjaan yang dihasilkan adalah pekerjaan terjadwal, tetapi tidak disimpan ke disk seperti pekerjaan terjadwal yang dipicu. Anda tidak dapat menggunakan parameter ArgumentList untuk Start-Job
menyediakan nilai untuk parameter skrip yang berjalan dalam pekerjaan terjadwal. Untuk informasi selengkapnya, lihat about_Scheduled_Jobs.
Parameter ini diperkenalkan di PowerShell 3.0.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-DefinitionPath
Menentukan jalur definisi untuk pekerjaan yang dimulai cmdlet ini. Masukkan jalur definisi. Perangkaian nilai parameter DefinitionPath dan DefinitionName adalah jalur definisi pekerjaan yang sepenuhnya memenuhi syarat. Gunakan parameter ini untuk memulai jenis pekerjaan kustom yang memiliki jalur definisi, seperti pekerjaan terjadwal.
Untuk pekerjaan terjadwal, nilai parameter DefinitionPath adalah $HOME\AppData\Local\Windows\PowerShell\ScheduledJob
.
Parameter ini diperkenalkan di PowerShell 3.0.
Type: | String |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FilePath
Menentukan skrip lokal yang Start-Job
berjalan sebagai pekerjaan latar belakang. Masukkan jalur dan nama file skrip atau gunakan alur untuk mengirim jalur skrip ke Start-Job
. Skrip harus berada di komputer lokal atau dalam folder yang dapat diakses komputer lokal.
Saat Anda menggunakan parameter ini, PowerShell mengonversi konten file skrip yang ditentukan ke blok skrip dan menjalankan blok skrip sebagai pekerjaan latar belakang.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InitializationScript
Menentukan perintah yang berjalan sebelum pekerjaan dimulai. Untuk membuat blok skrip, sertakan perintah dalam kurung kurawal ({}
).
Gunakan parameter ini untuk menyiapkan sesi tempat pekerjaan berjalan. Misalnya, Anda dapat menggunakannya untuk menambahkan fungsi, snap-in, dan modul ke sesi.
Type: | ScriptBlock |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Menentukan input ke perintah . Masukkan variabel yang berisi objek, atau ketik perintah atau ekspresi yang menghasilkan objek.
Dalam nilai parameter ScriptBlock , gunakan $input
variabel otomatis untuk mewakili objek input.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-LiteralPath
Menentukan skrip lokal yang dijalankan cmdlet ini sebagai pekerjaan latar belakang. Masukkan jalur skrip di komputer lokal.
Start-Job
menggunakan nilai parameter LiteralPath persis seperti yang ditik. Tidak ada karakter yang ditafsirkan sebagai karakter kartubebas. Jika jalur menyertakan karakter escape, sertakan dalam tanda kutip tunggal. Tanda kutip tunggal memberi tahu PowerShell untuk tidak menginterpretasikan karakter apa pun sebagai urutan escape.
Type: | String |
Aliases: | PSPath |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Name
Menentukan nama yang mudah diingat untuk pekerjaan baru. Anda dapat menggunakan nama untuk mengidentifikasi pekerjaan ke cmdlet pekerjaan lain, seperti Stop-Job
cmdlet.
Nama ramah default adalah Job#
, di mana #
adalah angka ordinal yang bertahap untuk setiap pekerjaan.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-PSVersion
Menentukan versi. Start-Job
menjalankan pekerjaan dengan versi PowerShell. Nilai yang dapat diterima untuk parameter ini adalah: 2.0
dan 3.0
.
Parameter ini diperkenalkan di PowerShell 3.0.
Type: | Version |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RunAs32
Menunjukkan bahwa Start-Job
menjalankan pekerjaan dalam proses 32-bit. RunAs32 memaksa pekerjaan berjalan dalam proses 32-bit, bahkan pada sistem operasi 64-bit.
Pada Windows 7 dan Windows Server 2008 R2 versi 64-bit, ketika Start-Job
perintah menyertakan parameter RunAs32 , Anda tidak dapat menggunakan parameter Kredensial untuk menentukan kredensial pengguna lain.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ScriptBlock
Menentukan perintah yang akan dijalankan di pekerjaan latar belakang. Untuk membuat blok skrip, sertakan perintah dalam kurung kurawal ({}
). $input
Gunakan variabel otomatis untuk mengakses nilai parameter InputObject. Parameter ini diperlukan.
Type: | ScriptBlock |
Aliases: | Command |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Type
Menentukan jenis kustom untuk pekerjaan yang dimulai oleh Start-Job
. Masukkan nama jenis pekerjaan kustom, seperti PSScheduledJob untuk pekerjaan terjadwal atau PSWorkflowJob untuk pekerjaan alur kerja. Parameter ini tidak valid untuk pekerjaan latar belakang standar.
Parameter ini diperkenalkan di PowerShell 3.0.
Type: | String |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Input
Anda dapat menyalurkan objek dengan properti Nama ke parameter Nama ke cmdlet ini. Misalnya, Anda dapat menyalurkan objek FileInfo dari Get-ChildItem
.
Output
System.Management.Automation.PSRemotingJob
Cmdlet ini mengembalikan objek PSRemotingJob yang mewakili pekerjaan yang dimulai.
Catatan
Windows PowerShell menyertakan alias berikut untuk Start-Job
:
sajb
Untuk berjalan di latar belakang, Start-Job
berjalan di sesinya sendiri dalam sesi saat ini. Saat Anda menggunakan Invoke-Command
cmdlet untuk menjalankan Start-Job
perintah dalam sesi di komputer jarak jauh, Start-Job
jalankan dalam sesi di sesi jarak jauh.