Laman » bagaimana untuk » Sekolah Geek Menulis Skrip PowerShell Penuh Pertama Anda

    Sekolah Geek Menulis Skrip PowerShell Penuh Pertama Anda

    Beberapa minggu yang lalu, The Geek menunjukkan kepada anda bagaimana anda boleh menggunakan arahan arahan untuk mencari apabila komputer anda dimulakan. Dalam pemasangan terakhir Sekolah Geek untuk PowerShell, kami akan menulis perintah PowerShell yang boleh digunakan untuk melakukan perkara yang sama.

    Pastikan anda membaca artikel sebelumnya dalam siri ini:

    • Ketahui Bagaimana Mengotomatikkan Windows dengan PowerShell
    • Belajar Menggunakan Cmdlets di PowerShell
    • Belajar Cara Menggunakan Objek di PowerShell
    • Pemformatan Pembelajaran, Penapisan dan Pembandingan di PowerShell
    • Belajarlah Menggunakan Remoting dalam PowerShell
    • Menggunakan PowerShell untuk Dapatkan Maklumat Komputer
    • Bekerja dengan Koleksi di PowerShell
    • Ketahui Cara Menggunakan Pekerjaan dalam PowerShell
    • Ketahui Cara Mengembangkan PowerShell
    • Pembolehubah PowerShell, Input dan Output

    Menulis Skrip Pertama Anda

    Perkara pertama yang perlu kita lakukan ialah mencari jalan untuk mengakses maklumat yang kita cari. Oleh kerana kita berurusan dengan maklumat pengurusan, kita mungkin perlu melihat menggunakan WMI, yang sememangnya mempunyai kelas yang dipanggil Win32_OperatingSystem yang membolehkan anda untuk melihat maklumat bercerita tentang sistem operasi anda, termasuk kali terakhir ia bermula.

    Jadi sekarang kita tahu di mana kita dapat mencari maklumat yang kita cari, buka ISE dan taipkan yang berikut.

    Get-WmiObject -Class Win32_OperatingSystem -ComputerName localhost |

    Select-Object -Property CSName, LastBootUpTime

    Nota: Saya terpaksa memecah kod saya di atas dua baris supaya semuanya sesuai dengan tangkapan skrin, tetapi jangan lupa taipkannya pada satu baris. Sekiranya anda memilih untuk membahagikannya dalam dua baris, sila pastikan karakter paip adalah watak terakhir pada baris 1.

    Sekarang klik pada butang "Run Script" hijau atau tekan kekunci F5 pada papan kekunci anda untuk menguji kod.

    WMI kali boleh menjadi sedikit misteri. Oleh itu kita maksudkan jika anda melihat harta LastBootUpTime, ia mengatakan 2013-03-19 pada 18:26:21, tetapi untuk sebab tertentu WMI lelaki memutuskan untuk menggabungkan semua itu menjadi rentetan tunggal. Nasib baik untuk kita, kita tidak perlu bimbang untuk mengurai rentetan secara manual kerana ada cara yang lebih mudah untuk melakukannya, walaupun lebih maju. Anda perlu mengubah bahagian Pilih-Objek kod untuk kelihatan seperti ini:

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

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

    Apa yang kita lakukan di sini ialah mewujudkan harta tersuai yang dipanggil "Last Booted" dan menyatakan bahawa nilainya mestilah hasil daripada memanggil kaedah statik ToDateTime pada sifat LastBootUpTime objek saluran paip semasa. Kod anda sepatutnya kelihatan seperti ini.

    Menjalankan kod sekarang akan menghasilkan masa boot yang lebih mudah dibaca.

    Sekarang kita gembira dengan fungsi asas naskah kita, kita perlu menyimpannya. Untuk kesederhanaan, biarkan ia sebagai berikut:

    C: \ Get-LastBootTime.ps1

    Sekarang beralih ke separuh bahagian bawah ISE dan jalankan yang berikut:

    C: \ Get-LastBootTime.ps1

    Hebat! Skrip kami berfungsi seperti yang diharapkan, namun masih terdapat satu masalah dengan skrip kami. Kami hardcoded nama komputer yang kita mahu untuk mendapatkan masa boot terakhir untuk. Daripada nilai hardcoding, kita sepatutnya memberikan parameter supaya sesiapa yang menggunakan skrip boleh memilih mana komputer mereka menjalankan skripnya. Untuk melakukan itu, pergi ke bahagian atas skrip anda dan lakukan perkara berikut.

    param (
    [string] $ ComputerName
    )

    Kemudian gantikan nilai localhost dikodkan dengan pembolehubah $ ComputerName. Skrip anda sekarang akan kelihatan seperti ini:

    Simpan skrip anda, kemudian kembali ke bahagian bawah ISE dan lihat bantuan untuk skrip anda.

    tolong C: \ Get-LastBootTime.ps1

    Awesome, jadi sekarang kita boleh nyatakan nama komputer yang kita mahu mendapatkan masa boot terakhir untuk menggunakan parameter ComputerName baru kita. Malangnya, masih ada beberapa perkara yang salah. Pertama, parameter KomputerName adalah pilihan dan kedua, itulah yang sangat membantu yang pernah saya lihat, jadi mari kita selesaikan masalah dengan cepat. Untuk membuat parameter KomputerName wajib, ubah kandungan blok param ke berikut.

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

    Bagi membuat fail bantuan yang lebih baik, kaedah yang paling biasa adalah menggunakan bantuan berasaskan komen. Ini bermakna kita hanya menambah komen yang panjang ke skrip teratas.

    <#
    .SINOPSIS
    Menunjukkan apabila komputer anda dimulakan.
    .DESKRIPSI
    Ini adalah fungsi pembungkus WMI untuk mendapatkan masa yang terakhir PC anda dimulakan.
    .PARAMETER ComputerName
    Nama Komputer yang anda mahu jalankan arahan itu.
    .CONTOH
    Get-LastBootTime-ComputerName localhost
    .LINK
    www.howtogeek.com
    #>

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

    Sekarang mari pergi dan periksa fail bantuan baru kami.

    Ahhh, kelihatan hebat! Sekarang skrip kami selesai, kami mempunyai satu perkara yang perlu dilakukan: ujian. Untuk ini, saya akan keluar dari ISE dan kembali ke konsol PowerShell supaya kami dapat memastikan bahawa tidak ada anomali.

    Sekiranya anda bermula dengan satu liner yang mudah dan terus membinanya seperti yang kita lakukan dalam panduan ini, anda akan mendapat genggamannya dalam masa yang singkat. Itu sahaja untuk orang kali ini, lihat anda dalam pemasangan Sekolah Geek seterusnya.