Geek School: Pelajari Cara Menggunakan Pekerjaan di PowerShell

Daftar Isi:

Geek School: Pelajari Cara Menggunakan Pekerjaan di PowerShell
Geek School: Pelajari Cara Menggunakan Pekerjaan di PowerShell

Video: Geek School: Pelajari Cara Menggunakan Pekerjaan di PowerShell

Video: Geek School: Pelajari Cara Menggunakan Pekerjaan di PowerShell
Video: Starters guide to editing Marlin firmware - one step at a time - YouTube 2024, November
Anonim
PowerShell memiliki empat jenis pekerjaan - Pekerjaan Latar Belakang, Pekerjaan Jarak Jauh, Pekerjaan WMI dan Pekerjaan Terjadwal. Bergabunglah dengan kami saat kami mengetahui apa itu dan bagaimana kami dapat menggunakannya.
PowerShell memiliki empat jenis pekerjaan - Pekerjaan Latar Belakang, Pekerjaan Jarak Jauh, Pekerjaan WMI dan Pekerjaan Terjadwal. Bergabunglah dengan kami saat kami mengetahui apa itu dan bagaimana kami dapat menggunakannya.

Pastikan untuk membaca artikel sebelumnya dalam rangkaian:

  • Pelajari Cara Mengotomatiskan Windows dengan PowerShell
  • Belajar Menggunakan Cmdlet di PowerShell
  • Mempelajari Cara Menggunakan Objek di PowerShell
  • Belajar Memformat, Memfilter dan Membandingkan dalam PowerShell
  • Belajar Menggunakan Remoting di PowerShell
  • Menggunakan PowerShell untuk Mendapatkan Informasi Komputer
  • Bekerja dengan Koleksi di PowerShell

Dan nantikan terus sisa serial ini sepanjang minggu.

Pekerjaan Latar Belakang

Hingga saat ini semua yang saya tunjukkan kepada Anda dalam PowerShell telah sinkron, yang berarti kami mengetikkan sesuatu ke dalam shell dan tidak dapat berbuat banyak sampai perintah tersebut selesai dijalankan. Di sinilah pekerjaan latar belakang masuk. Untuk memulai latar belakang, pekerjaan cukup melewati blok skrip ke cmdlet Start-Job.

Start-Job –Name GetFileList –Scriptblock {Get-ChildItem C: –Recurse}

Sekarang kita bebas melakukan apa pun yang kita inginkan di dalam shell saat blok skrip dijalankan di latar belakang.
Sekarang kita bebas melakukan apa pun yang kita inginkan di dalam shell saat blok skrip dijalankan di latar belakang.
Ketika Anda memulai pekerjaan baru, PowerShell membuat objek pekerjaan baru yang mewakili pekerjaan itu. Anda bisa mendapatkan daftar semua pekerjaan kapan saja dengan menjalankan cmdlet Get-Job.
Ketika Anda memulai pekerjaan baru, PowerShell membuat objek pekerjaan baru yang mewakili pekerjaan itu. Anda bisa mendapatkan daftar semua pekerjaan kapan saja dengan menjalankan cmdlet Get-Job.
Objek pekerjaan memberi tahu Anda tentang status pekerjaan. Sebagai contoh, dalam screenshot di atas kita dapat melihat bahwa kita memiliki BackgroundJob yang disebut GetFileList yang masih berjalan, tetapi sudah mulai mengembalikan data. Jika pada titik tertentu Anda memutuskan bahwa pekerjaan telah berjalan terlalu lama, Anda dapat dengan mudah menghentikannya dengan memipkannya ke Stop-Job.
Objek pekerjaan memberi tahu Anda tentang status pekerjaan. Sebagai contoh, dalam screenshot di atas kita dapat melihat bahwa kita memiliki BackgroundJob yang disebut GetFileList yang masih berjalan, tetapi sudah mulai mengembalikan data. Jika pada titik tertentu Anda memutuskan bahwa pekerjaan telah berjalan terlalu lama, Anda dapat dengan mudah menghentikannya dengan memipkannya ke Stop-Job.

Get-Job –Name GetFileList | Stop-Job

Namun, setelah Anda menghentikan pekerjaan, data apa pun yang diterimanya hingga Anda menghentikannya masih tersedia. Ada gotcha. Di PowerShell, setelah Anda menerima hasil untuk suatu pekerjaan, mereka akan dihapus. Agar mereka tetap, Anda harus menentukan parameter saklar tetap dari Terima-Pekerjaan.
Namun, setelah Anda menghentikan pekerjaan, data apa pun yang diterimanya hingga Anda menghentikannya masih tersedia. Ada gotcha. Di PowerShell, setelah Anda menerima hasil untuk suatu pekerjaan, mereka akan dihapus. Agar mereka tetap, Anda harus menentukan parameter saklar tetap dari Terima-Pekerjaan.

Get-Job –Name GetFileList | Receive-Job –Keep

Setelah Anda selesai dengan pekerjaan, itu adalah praktik terbaik untuk menghapusnya. Untuk menghapus pekerjaan, cukup menyalurkannya ke cmdlet Remove-Job.
Setelah Anda selesai dengan pekerjaan, itu adalah praktik terbaik untuk menghapusnya. Untuk menghapus pekerjaan, cukup menyalurkannya ke cmdlet Remove-Job.

Get-Job –Name GetFileList | Remove-Job

Ini akan menghapusnya dari daftar pekerjaan yang dikembalikan oleh Get-Job.

Image
Image

Pekerjaan Jarak Jauh

Beberapa pelajaran yang lalu, kami melihat bagaimana kami dapat menggunakan remoting untuk mengeksekusi perintah PowerShell pada mesin remote menggunakan Invoke-Command, tetapi apakah Anda tahu Anda juga dapat menggunakan Invoke-Command untuk memulai pekerjaan remoting di latar belakang? Untuk melakukannya, cukup tambahkan parameter –AsJob ke bagian akhir perintah Anda:

Invoke-Command -ComputerName Flash,Viper -Credential administrator -ScriptBlock {gci} –AsJob

Itu adalah perintah sederhana dan seharusnya sudah selesai dieksekusi sekarang jadi mari kita lihat status pekerjaan kita.
Itu adalah perintah sederhana dan seharusnya sudah selesai dieksekusi sekarang jadi mari kita lihat status pekerjaan kita.
Hmm, sepertinya gagal. Ini membawa saya pada gotcha pertama saya dengan pekerjaan. Saat Anda membuat pekerjaan baru jenis apa pun di PowerShell, ini akan membuat satu pekerjaan induk selain satu pekerjaan untuk setiap komputer yang Anda jalankan pekerjaannya. Saat Anda menggunakan cmdlet Get-Job, ini hanya menampilkan Anda pekerjaan induk, dan properti negara adalah skenario kasus terburuk, yang berarti bahwa bahkan jika perintah hanya gagal dijalankan pada satu dari seratus komputer, status pekerjaan orang tua akan mengatakan gagal. Untuk melihat daftar pekerjaan anak Anda perlu menggunakan parameter IncludeChildJob.
Hmm, sepertinya gagal. Ini membawa saya pada gotcha pertama saya dengan pekerjaan. Saat Anda membuat pekerjaan baru jenis apa pun di PowerShell, ini akan membuat satu pekerjaan induk selain satu pekerjaan untuk setiap komputer yang Anda jalankan pekerjaannya. Saat Anda menggunakan cmdlet Get-Job, ini hanya menampilkan Anda pekerjaan induk, dan properti negara adalah skenario kasus terburuk, yang berarti bahwa bahkan jika perintah hanya gagal dijalankan pada satu dari seratus komputer, status pekerjaan orang tua akan mengatakan gagal. Untuk melihat daftar pekerjaan anak Anda perlu menggunakan parameter IncludeChildJob.
Jika Anda melihat lebih dekat, Anda akan melihat bahwa pekerjaan itu memang hanya gagal pada satu komputer, yang membawa kita ke gotcha berikutnya. Saat Anda mencoba dan mendapatkan hasil untuk pekerjaan itu, jika Anda menentukan nama atau ID pekerjaan orang tua, PowerShell akan mengembalikan data dari semua pekerjaan anak. Masalahnya adalah jika ada kesalahan dalam salah satu pekerjaan anak, kita akan ditinggalkan dengan beberapa teks merah.
Jika Anda melihat lebih dekat, Anda akan melihat bahwa pekerjaan itu memang hanya gagal pada satu komputer, yang membawa kita ke gotcha berikutnya. Saat Anda mencoba dan mendapatkan hasil untuk pekerjaan itu, jika Anda menentukan nama atau ID pekerjaan orang tua, PowerShell akan mengembalikan data dari semua pekerjaan anak. Masalahnya adalah jika ada kesalahan dalam salah satu pekerjaan anak, kita akan ditinggalkan dengan beberapa teks merah.
Ada dua cara untuk mengatasi hal ini. Pertama, jika Anda tahu komputer apa yang Anda inginkan hasilnya, Anda cukup menggunakan parameter ComputerName dari cmdlet Recieve –Job.
Ada dua cara untuk mengatasi hal ini. Pertama, jika Anda tahu komputer apa yang Anda inginkan hasilnya, Anda cukup menggunakan parameter ComputerName dari cmdlet Recieve –Job.

Get-Job –Id 3 | Receive-Job –Keep –ComputerName Viper

Atau, Anda bisa mendapatkan hasil dari pekerjaan anak tertentu menggunakan id pekerjaannya.
Atau, Anda bisa mendapatkan hasil dari pekerjaan anak tertentu menggunakan id pekerjaannya.

Get-Job -Id 3 –IncludeChildJob

Image
Image

Get-Job -Id 5 | Receive-Job –Keep

Image
Image

Pekerjaan WMI

Pekerjaan WMI hampir sama dengan Pekerjaan Jarak Jauh, hanya membutuhkan parameter –AsJob yang akan ditambahkan ke cmdlet Get-WmiObject.

Image
Image
Sayangnya, ini berarti bahwa mereka juga tunduk pada gotha yang sama yang saya sebutkan di bagian Pekerjaan Jarak Jauh.
Sayangnya, ini berarti bahwa mereka juga tunduk pada gotha yang sama yang saya sebutkan di bagian Pekerjaan Jarak Jauh.

Pekerjaan Terjadwal

Tiga jenis pekerjaan terakhir yang kami lihat tidak persisten, yang berarti bahwa mereka hanya tersedia di sesi Anda saat ini. Pada dasarnya, itu berarti jika Anda memulai suatu pekerjaan dan kemudian membuka Konsol PowerShell lain dan menjalankan Get-Job, Anda tidak akan melihat pekerjaan apa pun. Namun, kembali ke konsol Anda menendang pekerjaan itu dari, Anda akan dapat melihat statusnya. Ini berbeda dengan Pekerjaan Terjadwal yang mana gigih. Pada dasarnya, Pekerjaan Terjadwal adalah blok skrip yang berjalan sesuai jadwal. Di masa lalu, pengaruh yang sama bisa dicapai menggunakan Windows Task Scheduler, yang benar-benar apa yang terjadi di bawah kap mesin. Untuk membuat Pekerjaan Terjadwal yang baru, kami melakukan hal berikut:

Register-ScheduledJob -Name GetEventLogs -ScriptBlock {Get-EventLog -LogName Security -Newest 100} -Trigger (New-JobTrigger -Daily -At 5pm) -ScheduledJobOption (New-ScheduledJobOption -RunElevated)

Ada banyak hal yang terjadi dalam perintah itu, jadi mari kita hancurkan.

  • Pertama, kami memberikan Job Terjadwal kami nama GetEventLogs.
  • Kami kemudian mengatakan bahwa ketika dipicu, kami ingin menjalankan konten blok skrip yang ditentukan, yang pada dasarnya mendapat 100 entri terbaru dari log kejadian Keamanan.
  • Selanjutnya, kami tentukan pemicu. Karena parameter pemicu mengambil objek pemicu sebagai input, kami menggunakan perintah parenthetical untuk menghasilkan pemicu yang akan mati setiap hari pada jam 5 sore.
  • Karena kita berurusan dengan event log, kita perlu menjalankan sebagai administrator, yang dapat kita tentukan dengan membuat objek ScheduledJobOption yang baru dan meneruskannya ke parameter ScheduledJobOption.
Karena ini adalah jenis pekerjaan yang sedikit berbeda, Anda juga perlu menggunakan perintah yang berbeda untuk mengambil daftar semua pekerjaan terjadwal pada mesin.
Karena ini adalah jenis pekerjaan yang sedikit berbeda, Anda juga perlu menggunakan perintah yang berbeda untuk mengambil daftar semua pekerjaan terjadwal pada mesin.

Get-ScheduledJob

Direkomendasikan: