PowerShell Snap-in: Run-time Data
oleh Thomas Deml
Panduan sebelumnya memperlihatkan kepada Anda cara mengkueri dan mengubah pengaturan konfigurasi IIS. Namun, ada satu area yang tidak dijelajahi yang tersisa: data run-time.
Pengantar
Hal-hal yang berubah, IIS tidak berbeda. Situs dimulai atau dihentikan, daur ulang atau waktu habis Kumpulan Aplikasi, permintaan masuk dan respons dikirim, AppDomains diluncurkan atau dimatikan. IIS mengimplementasikan antarmuka yang disebut RSCA (status run-time dan API kontrol) yang memungkinkan Anda memantau apa yang terjadi dalam sistem.
IIS PowerShell Snap-in menggunakan antarmuka ini dan mengekspos beberapa datanya melalui namespace IIS Snap-in. Status Situs dan Kumpulan Aplikasi dapat dikonfigurasi melalui cmdlet Get-WebItemState, Start-WebItem, Stop-WebItem dan Restart-WebItem. Status run-time seperti proses pekerja yang sedang berjalan, saat ini menjalankan permintaan dan AppDomain yang dimuat diekspos melalui namespace IIS.
Panduan ini menggunakan situs, aplikasi, dan direktori virtual yang dibuat dalam panduan sebelumnya.
Situs dan Status Kumpulan Aplikasi
Kami memulai dengan mengkueri status situs web kami.
Status Situs
PS IIS:\> cd Sites
PS IIS:\Sites> Get-WebItemState IIS:\Sites\DemoSite
Started
Menghentikan DemoSite dapat dicapai dengan cmdlet Stop-WebItem:
PS IIS:\Sites> Stop-WebItem DemoSite
PS IIS:\Sites> Get-WebItemState IIS:\Sites\DemoSite
Stopped
Memulai bekerja dengan cara yang sama tentu saja:
PS IIS:\Sites> Start-WebItem DemoSite
PS IIS:\Sites> Get-WebItemState IIS:\sites\DemoSite
Started
Status AppPool
Kami ingin melakukan hal yang sama untuk Kumpulan Aplikasi
PS IIS:\> cd AppPools
PS IIS:\AppPools> Get-WebItemState DemoAppPool
Started
PS IIS:\AppPools> Stop-WebItem DemoAppPool
PS IIS:\AppPools> Get-WebItemState DemoAppPool
Stopped
Tetapi ada juga properti status yang dapat Anda baca di simpul AppPools. Mari kita bersenang-senang dengan contoh berikutnya. Aktifkan speaker Anda dan jalankan perintah berikut:
dir 'iis:\AppPools' | foreach {[void](new-object -com Sapi.SPVoice).Speak("Application Pool State:");}{$poolState = "Application Pool " + $_.Name +" is " + $_.State;$poolState;[void](new-object -com Sapi.SPVoice).Speak($poolState);}
Sekarang mulai DemoAppPool lagi:
PS IIS:\AppPools> Start-WebItem DemoAppPool
Mendaur ulang AppPools
Satu perbedaan dengan AppPools adalah bahwa mereka dapat didaur ulang. Cmdlet untuk mendaur ulang AppPools disebut Restart-WebItem dan bukan Recycle-WebItem. PowerShell memiliki aturan penamaan yang cukup ketat dan kami harus menyelesaikan Restart-WebItem. Mari kita perluas contoh ini sedikit dengan
- Membuat permintaan ke halaman default 'Situs Web Default'.
- Mengkueri PID proses pekerja adalah yang menangani permintaan.
- Mendaur ulang Kumpulan Aplikasi.
- Meminta PID lagi untuk mengonfirmasi bahwa proses telah dimulai ulang.
1. Meminta halaman default
Kami menggunakan kelas Net.WebClient untuk meminta http://localhost/
. Alih-alih menampilkan output di layar, kita hanya melihat panjang respons.
PS IIS:\AppPools> $response = (new-object Net.WebClient).DownloadString("http://localhost/")
PS IIS:\AppPools> $response.Length
689
2. Mengkueri PID Proses Pekerja
Dengan asumsi Anda tidak memiliki situs web aktif dan aplikasi lain di komputer Anda, perintah berikut harus mengembalikan hanya satu PID:
PS IIS:\AppPools> get-process w3wp | select processname,id
ProcessName Id
----------- --
w3wp 3684
Ada cara yang lebih baik untuk sampai ke proses pekerja, ditangani sedikit kemudian dalam panduan ini.
3. Mendaur ulang Kumpulan Aplikasi
Kami mendaur ulang Kumpulan Aplikasi dengan menggunakan cmdlet Restart-WebItem:
PS IIS:\AppPools> Restart-WebItem DefaultAppPool
4. Mengkueri PID Proses Pekerja
Jika AppPool berhasil didaur ulang, ID Proses Anda seharusnya telah diubah.
PS IIS:\AppPools> get-process w3wp | select processname,id
ProcessName Id
----------- --
w3wp 5860
Proses dan Permintaan Pekerja
Cmdlet get-process tidak membantu Anda mencari tahu Kumpulan Aplikasi mana yang dilayani oleh proses pekerja tertentu. Namun, ini dapat dengan mudah dilakukan:
PS IIS:\AppPools> dir DefaultAppPool\WorkerProcesses
processId Handles state StartTime
--------- ------- ----- ---------
6612 326 1 3/28/2008 12:20:27 PM
Permintaan yang Sedang Dijalankan
Jika mesin Anda bukan mesin produksi, Anda akan kesulitan melihat permintaan yang saat ini dijalankan. Permintaan sudah lama hilang sampai Anda membuat permintaan melalui Internet Explorer dan kembali ke konsol PowerShell. Inilah pembantu kecil; permintaan yang membutuhkan waktu lama.
Set-Content "$env:systemdrive\inetpub\wwwroot\long.aspx" "<%@ Page language=`"C#`"%><%System.Threading.Thread.Sleep(30000);Response.Write(`"slept for 30 seconds`");%>"
Jika Anda ingin melihat permintaan yang sedang dijalankan, Anda dapat mengetik perintah berikut (CATATAN: id proses yang harus Anda gunakan untuk perintah get-item akan berbeda di komputer Anda):
PS IIS:\AppPools\DefaultAppPool\WorkerProcesses> dir
Process State Handles Start Time
Id
-------- ----- ------- ----------
6612 Running 737 3/31/2008 8:18:15 AM
PS IIS:\AppPools\DefaultAppPool\WorkerProcesses> (get-item 6612).GetRequests(0).Collection
requestId : d8000001800000f5
connectionId : d8000001600000f3
verb : GET
url : /long.aspx
siteId : 1
Atau jika Anda ingin melihat berapa banyak waktu yang sudah berlalu sejak Anda memulai permintaan:
PS IIS:\AppPools\DefaultAppPool\WorkerProcesses> (get-item 6612).GetRequests(0).Collection | select url,timeElapsed
url timeElapsed
--- -----------
/long.aspx 2637
Ringkasan
Selesai. Dalam panduan ini Anda mempelajari cara mengkueri status Kumpulan Aplikasi dan Situs IIS. Anda menemukan cara memulai dan menghentikannya. Anda juga mempelajari cara melihat proses pekerja dan saat ini menjalankan permintaan.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk