Geek School: Menulis Script Full PowerShell Anda yang Pertama

Daftar Isi:

Geek School: Menulis Script Full PowerShell Anda yang Pertama
Geek School: Menulis Script Full PowerShell Anda yang Pertama

Video: Geek School: Menulis Script Full PowerShell Anda yang Pertama

Video: Geek School: Menulis Script Full PowerShell Anda yang Pertama
Video: How to Kill a Process from Command line in Windows 10 - YouTube 2024, April
Anonim
Beberapa minggu yang lalu, The Geek menunjukkan kepada Anda bagaimana Anda dapat menggunakan command prompt untuk menemukan kapan komputer Anda dinyalakan terakhir. Dalam instalasi terakhir Geek School for PowerShell ini, kita akan menulis perintah PowerShell yang dapat digunakan kembali untuk melakukan hal yang sama.
Beberapa minggu yang lalu, The Geek menunjukkan kepada Anda bagaimana Anda dapat menggunakan command prompt untuk menemukan kapan komputer Anda dinyalakan terakhir. Dalam instalasi terakhir Geek School for PowerShell ini, kita akan menulis perintah PowerShell yang dapat digunakan kembali untuk melakukan hal yang sama.

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
  • Pelajari Cara Menggunakan Pekerjaan di PowerShell
  • Pelajari Cara Memperpanjang PowerShell
  • Mempelajari Variabel, Input dan Output PowerShell

Menulis Naskah Pertama Anda

Hal pertama yang perlu kita lakukan adalah menemukan cara untuk mengakses informasi yang kita cari. Karena kita berurusan dengan informasi manajemen, kita mungkin perlu melihat menggunakan WMI, yang memang memiliki kelas yang disebut Win32_OperatingSystem yang memungkinkan Anda untuk melihat informasi lengkap tentang sistem operasi Anda, termasuk yang terakhir kali dimulainya.

Jadi sekarang kita tahu di mana kita dapat menemukan informasi yang kita cari, buka ISE dan ketik yang berikut.
Jadi sekarang kita tahu di mana kita dapat menemukan informasi yang kita cari, buka ISE dan ketik yang berikut.

Get-WmiObject -Class Win32_OperatingSystem –ComputerName localhost |

Select-Object -Property CSName,LastBootUpTime

Catatan: Saya harus membagi kode saya lebih dari dua baris sehingga semuanya cocok dengan screenshot, tetapi merasa bebas untuk mengetikkannya pada satu baris. Jika Anda memilih untuk membaginya menjadi dua garis, harap pastikan bahwa karakter pipa adalah karakter terakhir pada baris 1.

Sekarang klik tombol "Run Script" hijau atau tekan tombol F5 pada keyboard Anda untuk menguji kode.
Sekarang klik tombol "Run Script" hijau atau tekan tombol F5 pada keyboard Anda untuk menguji kode.
WMI kali bisa menjadi sedikit samar. Maksud kami jika Anda melihat properti LastBootUpTime, ia mengatakan 2013-03-19 di 18:26:21, tetapi untuk beberapa alasan, orang-orang WMI memutuskan untuk menggabungkan semua itu ke dalam string tunggal. Untungnya bagi kami, kami tidak perlu khawatir menguraikan string secara manual karena ada cara yang lebih mudah untuk melakukannya, meskipun lebih maju. Anda harus mengubah bagian Select-Object dari kode agar terlihat seperti ini:
WMI kali bisa menjadi sedikit samar. Maksud kami jika Anda melihat properti LastBootUpTime, ia mengatakan 2013-03-19 di 18:26:21, tetapi untuk beberapa alasan, orang-orang WMI memutuskan untuk menggabungkan semua itu ke dalam string tunggal. Untungnya bagi kami, kami tidak perlu khawatir menguraikan string secara manual karena ada cara yang lebih mudah untuk melakukannya, meskipun lebih maju. Anda harus mengubah bagian Select-Object dari kode agar terlihat seperti ini:

Select-Object -Property CSName,@{n=”Last Booted”;

e={[Management.ManagementDateTimeConverter]::ToDateTime($_.LastBootUpTime)}}

Apa yang kami lakukan di sini adalah membuat properti kustom yang disebut "Last Booted" dan menetapkan bahwa nilainya harus merupakan hasil pemanggilan metode statis ToDateTime pada properti LastBootUpTime dari objek pipeline saat ini. Kode Anda sekarang seharusnya terlihat seperti ini.

Menjalankan kode sekarang akan menghasilkan waktu boot terakhir yang jauh lebih mudah dibaca.
Menjalankan kode sekarang akan menghasilkan waktu boot terakhir yang jauh lebih mudah dibaca.
Sekarang kami puas dengan fungsi dasar skrip kami, kami harus menyimpannya. Untuk kesederhanaan, mari kita simpan sebagai berikut:
Sekarang kami puas dengan fungsi dasar skrip kami, kami harus menyimpannya. Untuk kesederhanaan, mari kita simpan sebagai berikut:

C:Get-LastBootTime.ps1

Sekarang beralih ke bagian bawah ISE dan jalankan yang berikut:
Sekarang beralih ke bagian bawah ISE dan jalankan yang berikut:

C:Get-LastBootTime.ps1

Besar! Skrip kami berfungsi seperti yang diharapkan, namun masih ada satu masalah dengan skrip kami. Kami mengarsipkan nama komputer yang kami inginkan untuk mendapatkan waktu boot terakhir. Alih-alih nilai-nilai hardcoding, kita sebaiknya memberikan parameter sehingga siapa pun yang menggunakan skrip dapat memilih komputer mana mereka menjalankan skrip terhadap. Untuk melakukan itu, pergi ke bagian atas skrip Anda dan lakukan yang berikut ini.
Besar! Skrip kami berfungsi seperti yang diharapkan, namun masih ada satu masalah dengan skrip kami. Kami mengarsipkan nama komputer yang kami inginkan untuk mendapatkan waktu boot terakhir. Alih-alih nilai-nilai hardcoding, kita sebaiknya memberikan parameter sehingga siapa pun yang menggunakan skrip dapat memilih komputer mana mereka menjalankan skrip terhadap. Untuk melakukan itu, pergi ke bagian atas skrip Anda dan lakukan yang berikut ini.

param( [string]$ComputerName )

Kemudian ganti nilai localhost hardcoded dengan variabel $ ComputerName. Skrip Anda seharusnya sekarang terlihat seperti ini:

Simpan skrip Anda, kemudian kembali ke bagian bawah ISE dan lihat bantuan untuk skrip Anda.
Simpan skrip Anda, kemudian kembali ke bagian bawah ISE dan lihat bantuan untuk skrip Anda.

help C:Get-LastBootTime.ps1

Luar biasa, jadi sekarang kita dapat menentukan nama komputer yang kita inginkan untuk mendapatkan waktu boot terakhir untuk menggunakan parameter ComputerName yang baru. Sayangnya, masih ada beberapa hal yang salah. Pertama, parameter ComputerName adalah opsional dan kedua, itu adalah bantuan paling buruk yang pernah saya lihat, jadi mari perbaiki masalah tersebut dengan cepat. Untuk membuat parameter ComputerName wajib, ubah isi blok param menjadi yang berikut.
Luar biasa, jadi sekarang kita dapat menentukan nama komputer yang kita inginkan untuk mendapatkan waktu boot terakhir untuk menggunakan parameter ComputerName yang baru. Sayangnya, masih ada beberapa hal yang salah. Pertama, parameter ComputerName adalah opsional dan kedua, itu adalah bantuan paling buruk yang pernah saya lihat, jadi mari perbaiki masalah tersebut dengan cepat. Untuk membuat parameter ComputerName wajib, ubah isi blok param menjadi yang berikut.

[Parameter(Mandatory=$true)][string]$ComputerName

Untuk membuat file bantuan yang lebih baik, metode yang paling umum adalah menggunakan bantuan berbasis komentar. Itu berarti kita hanya menambahkan komentar ekstra panjang ke bagian atas naskah.

<#.SYNOPSIS Shows when last your PC started up..DESCRIPTION This is a WMI wrapper function to get the time that your PC last started up..PARAMETER ComputerName The name of the Computer you want to run the command against..EXAMPLE Get-LastBootTime -ComputerName localhost.LINK www.howtogeek.com #>

Setelah semua yang dilakukan, Anda harus berakhir dengan skrip yang terlihat seperti ini.

Direkomendasikan: