Bagikan melalui


Mulai menggunakan AppCmd.exe

oleh Mike Volodarsky

Gambaran Umum

AppCmd.exe adalah alat baris perintah tunggal untuk mengelola IIS 7 ke atas. Ini mengekspos semua fungsionalitas manajemen server kunci melalui sekumpulan objek manajemen intuitif yang dapat dimanipulasi dari baris perintah atau dari skrip.

AppCmd memungkinkan Anda mengontrol server dengan mudah tanpa menggunakan alat administrasi grafis dan mengotomatiskan tugas manajemen server dengan cepat tanpa menulis kode.

Beberapa hal yang dapat Anda lakukan dengan AppCmd:

  • Membuat dan mengonfigurasi situs, aplikasi, kumpulan aplikasi, dan direktori virtual
  • Memulai dan menghentikan situs, dan mendaur ulang kumpulan aplikasi
  • Mencantumkan proses pekerja yang sedang berjalan, dan memeriksa permintaan yang sedang dijalankan
  • Mencari, memanipulasi, mengekspor, dan mengimpor IIS dan konfigurasi ASP.NET

AppCmd juga memungkinkan administrator server untuk membangun tugas manajemen tingkat lanjut hanya dengan menggabungkan beberapa perintah AppCmd.exe yang lebih sederhana, atau menggunakan kembali output alat di dalam program lain.

Anda juga dapat menemukan lebih banyak topik AppCmd dan mempelajari cara canggih untuk mengelola server Anda dari baris perintah di blog saya, di https://mvolo.com/category/appcmd/.

Cara Menggunakan AppCmd.exe

Baris perintah AppCmd.exe dibangun di atas sekumpulan objek manajemen server tingkat atas, seperti Situs dan Aplikasi. Objek ini mengekspos metode yang dapat digunakan untuk melakukan berbagai tindakan pada objek tersebut, dan instans objek mengekspos properti yang dapat diperiksa dan dimanipulasi.

Misalnya, objek Situs menyediakan metode untuk mencantumkan, membuat dan menghapus instans situs (ini adalah metode standar yang ada di hampir semua objek), serta situs berhenti dan mulai. Setiap instans situs pada gilirannya akan berisi properti, seperti nama situs dan id situs, yang dapat diperiksa, dicari, atau diatur. Output dari setiap perintah selalu merupakan daftar instans objek.

Catatan

AppCmd.exe terletak di %systemroot%\system32\inetsrv\ direktori . Karena ini bukan bagian dari PATH secara otomatis, Anda perlu menggunakan jalur lengkap ke executable saat menjalankan perintah seperti di %systemroot%\system32\inetsrv\AppCmd.exe list sites. Atau, Anda dapat menambahkan direktori inetsrv secara manual ke jalur di komputer Anda sehingga Anda dapat mengakses AppCmd.exe langsung dari lokasi mana pun.

Alat ini bekerja dengan menjalankan perintah pada salah satu objek manajemen yang didukung, dengan parameter opsional yang digunakan untuk menyesuaikan perilaku perintah lebih lanjut:

APPCMD (command) (object-type) <identifier> < /parameter1:value1 ... >*

Di mana <COMMAND> adalah salah satu perintah yang didukung oleh <OBJECT>. Sebagian besar objek mendukung sekumpulan perintah dasar ini:

  • DAFTAR Tampilkan objek pada komputer. ID> opsional <dapat menentukan objek unik untuk dicantumkan, atau satu atau beberapa parameter dapat ditentukan untuk dicocokkan dengan properti objek.
  • MENAMBAHKAN Buat objek baru dengan properti objek yang ditentukan untuk diatur selama pembuatan.
  • MENGHAPUS Hapus objek yang ditentukan oleh <ID>.
  • SET Atur parameter pada objek yang ditentukan oleh <ID>.

Objek akan sering mendukung perintah tambahan, seperti START dan STOP untuk objek Situs.

Misalnya, kumpulan objek saat ini yang tersedia melalui AppCmd adalah (di mana <OBJECT> adalah salah satu objek manajemen yang didukung oleh alat):

Objek Deskripsi
Situs Administrasi situs virtual
Aplikasi Administrasi aplikasi
VDir Administrasi direktori virtual
Apppool Administrasi kumpulan aplikasi
Konfigurasi Administrasi bagian konfigurasi umum
Cadangan Manajemen pencadangan konfigurasi server
WP Administrasi proses pekerja
Minta Tampilan permintaan HTTP aktif
Modul Administrasi modul server
Jejak Manajemen log jejak server

Di mana <ID> adalah pengidentifikasi khusus objek untuk instans objek yang ingin Anda tentukan untuk perintah. Format pengidentifikasi khusus untuk setiap jenis objek. Misalnya, objek Situs menggunakan nama situs, objek Aplikasi menggunakan jalur aplikasi, dan objek AppPool menggunakan nama kumpulan aplikasi.

Di mana [ /parameter:value ]* adalah nol atau lebih parameter untuk perintah. Setiap perintah mendukung sekumpulan parameter yang berbeda, tergantung pada objek . Biasanya, perintah yang mencari objek atau memanipulasi properti objek akan memungkinkan salah satu properti objek ditentukan sebagai parameter.

Alat ini sendiri juga mendukung sejumlah parameter yang memengaruhi eksekusi perintah umum, dan tidak spesifik untuk salah satu objek. Ini tercantum di halaman bantuan tingkat atas yang tersedia dari "AppCmd.exe /?", dan menyertakan parameter seperti /text, /config, dan /xml untuk mengontrol output alat, dan /commit untuk mengontrol lokasi perubahan konfigurasi.

Mendapatkan bantuan

AppCmd menyediakan bantuan yang menjelaskan sendiri yang dapat digunakan sebagai referensi untuk semua objek dan perintah yang didukung. Ada tiga jenis bantuan yang tersedia saat Anda menelusuri tugas yang ingin Anda lakukan.

Bantuan Umum

Layar bantuan umum menunjukkan objek yang didukung oleh alat, serta parameter alat yang berlaku secara umum. Untuk menampilkan bantuan umum:

APPCMD /?

Beberapa baris output pertama adalah:

General purpose IIS command line administration tool.
APPCMD (command) (object-type) <identifier> < /parameter1:value1 ... >

Supported object types:
       
  SITE      Administration of virtual sites
  APP       Administration of applications              

...

Bantuan Objek

Layar bantuan objek memperlihatkan perintah yang didukung oleh objek tertentu. Untuk menampilkan bantuan objek:

APPCMD <OBJECT> /?

di mana <OBJECT> adalah salah satu jenis objek yang didukung. Misalnya, baris perintah ini akan menampilkan bantuan untuk objek situs:

APPCMD site /?

Bantuan Perintah

Layar bantuan perintah menguraikan sintaks untuk perintah dan objek tertentu, termasuk parameter yang didukungnya dan contoh tugas umum. Untuk menampilkan bantuan perintah:

APPCMD <COMMAND> <OBJECT> /?

Misalnya, baris perintah ini akan menampilkan bantuan untuk perintah LIST dari objek Aplikasi:

APPCMD list app /?

Menemukan Objek dengan Perintah LIST

Perintah LIST adalah perintah yang paling serbaguna, dan didukung oleh semua objek. Tujuan dari perintah ini adalah untuk menemukan instans objek berdasarkan kriteria yang Anda tentukan. Output dari perintah ini adalah daftar instans objek, yang dapat Anda periksa dengan melihat propertinya, mengekspor untuk pembuatan ulang di masa mendatang di komputer lain, atau menggunakan bersama dengan perintah lain untuk melakukan tindakan pada mereka.

Mencantumkan Semua Objek

Cara paling sederhana untuk menggunakan perintah LIST adalah tanpa parameter, yang hanya mencantumkan semua instans objek yang diketahui:

APPCMD list <OBJECT>

Misalnya, untuk mencantumkan semua situs di komputer, gunakan baris perintah ini:

%systemroot%\system32\inetsrv\APPCMD list sites

Outputnya akan mirip dengan:

SITE "Default Web Site" (id:1,bindings:HTTP/*:80:,state:Started)
SITE "Site1" (id:2,bindings:http/*:81:,state:Started)
SITE "Site2" (id:3,bindings:http/*:82:,state:Stopped)

Secara default, setiap objek ditampilkan pada satu baris, menentukan pengidentifikasi khusus objeknya (seperti "Situs Web Default") dan satu atau beberapa properti penting (seperti id, pengikatan, dan status).

Mencantumkan Objek Tertentu

Perintah LIST dapat digunakan untuk menemukan instans objek tertentu bernama dengan menggunakan baris perintah dalam formulir ini:

APPCMD list <OBJECT> <ID>

Misalnya, gunakan baris perintah ini untuk menemukan situs dengan id unik "Situs Web Default":

%systemroot%\system32\inetsrv\APPCMD list site "Default Web Site"

Mencantumkan Objek yang Memenuhi Kueri

Untuk menemukan semua instans objek yang cocok dengan kriteria tertentu, tentukan satu atau beberapa parameter yang menunjukkan nilai properti objek yang cocok. Misalnya, gunakan baris perintah ini untuk menemukan semua situs yang dihentikan:

%systemroot%\system32\inetsrv\APPCMD list sites /state:Stopped

Anda dapat menentukan sejumlah pasangan nilai properti, dan alat ini akan memastikan bahwa objek yang dikembalikan memenuhi semua kriteria yang ditentukan. Misalnya, gunakan baris perintah ini untuk menemukan situs yang dihentikan dan dikonfigurasi agar tidak dimulai secara otomatis:

%systemroot%\system32\inetsrv\APPCMD list sites /serverAutoStart:false /state:Stopped

Memanipulasi Objek dengan ADD, SET, dan DELETE

Selain LIST, sebagian besar objek juga mendukung perintah ADD, SET, dan DELETE.

Menambahkan Objek Baru

Perintah ADD membuat instans baru objek. Misalnya, baris perintah ini akan membuat Situs baru:

%systemroot%\system32\inetsrv\APPCMD add site /name:MyNewSite /bindings:"http/*:81:" /physicalPath:"C:\MyNewSite"

Bergantung pada objek , beberapa parameter akan diperlukan untuk mengatur properti yang diperlukan pada instans baru, dan properti lain mungkin opsional. Kesalahan akan dikembalikan jika parameter yang diperlukan tidak ditentukan.

Layar bantuan perintah menunjukkan parameter mana yang diperlukan. Misalnya, gunakan baris perintah ini untuk melihat parameter apa yang diperlukan untuk menambahkan Situs:

%systemroot%\system32\inetsrv\APPCMD add site /?

Baca selengkapnya tentang membuat situs, aplikasi, direktori virtual, dan kumpulan aplikasi dengan AppCmd.

Mengubah Objek yang Ada

Perintah SET menetapkan satu atau beberapa properti pada instans objek tertentu. Perintah ini mengharuskan pengidentifikasi khusus objek ditentukan. Misalnya, untuk mengubah properti id dari "Situs Web Default", gunakan baris perintah ini:

%systemroot%\system32\inetsrv\APPCMD set site "Default Web Site" /id:200

Gunakan bentuk sintaks bantuan perintah untuk melihat properti apa yang dapat diatur pada objek tertentu. Misalnya, untuk melihat properti yang didukung oleh penggunaan Situs Web Default:

%systemroot%\system32\inetsrv\APPCMD set site "Default Web Site" /?

Menghapus Objek

Perintah DELETE menghapus instans objek. Seperti SET, perintah ini juga mengharuskan pengidentifikasi khusus objek ditentukan. Misalnya, gunakan baris perintah ini untuk menghapus situs bernama "MyNewSite":

%systemroot%\system32\inetsrv\APPCMD delete site "MyNewSite"

Mengelola Cadangan

AppCmd memungkinkan Anda membuat dan memulihkan cadangan konfigurasi server global. Anda dapat menggunakan ini untuk memulihkan dari perubahan yang tidak diinginkan pada konfigurasi server, dan kembali ke status server yang diketahui baik. Ada baiknya membuat cadangan sebelum mengubah konfigurasi server, atau menginstal komponen yang mengubahnya. Setiap cadangan berisi salinan file konfigurasi akar ApplicationHost.config saat ini, serta status seluruh server terkait lainnya termasuk konfigurasi FTP dan konfigurasi Alat Administrasi IIS.

Untuk membuat cadangan, gunakan perintah ADD dari objek Backup:

%systemroot%\system32\inetsrv\APPCMD add backup
BACKUP object "20060519T172530" added

Ini membuat cadangan dengan nama yang dibuat secara otomatis yang mewakili tanggal dan waktu pencadangan.

Nama tertentu untuk cadangan dapat ditentukan seperti ini:

%systemroot%\system32\inetsrv\APPCMD add backup MyBackup
BACKUP object "MyBackup" added

Anda dapat menampilkan daftar cadangan yang tersedia menggunakan perintah LIST dari objek Cadangan:

%systemroot%\system32\inetsrv\APPCMD list backups
BACKUP "20060519T172530"
BACKUP "MyBackup"

Terakhir, untuk memulihkan cadangan, gunakan perintah RESTORE dengan nama cadangan:

%systemroot%\system32\inetsrv\APPCMD restore backup "MyBackup"
Restored configuration from backup "MyBackup"

Memulihkan cadangan menghentikan server dan memulihkan konfigurasi global ke statusnya pada saat cadangan dibuat.

Di Windows Server® 2008 dan Windows Vista SP1, AppCmd juga akan mampu bekerja dengan cadangan konfigurasi berkala yang dibuat oleh layanan riwayat konfigurasi. Cadangan ini akan muncul dalam daftar cadangan AppCmd dan akan tersedia untuk memulihkan dengan cara yang sama seperti cadangan yang Anda buat secara manual melalui alat.

Untuk mempelajari selengkapnya tentang mengelola cadangan konfigurasi dengan AppCmd, lihat http://mvolo.com/most-important-appcmd-commands-backing-up-and-restoring-iis7-configuration/.

Bekerja dengan Situs, Aplikasi, Direktori Virtual, dan Kumpulan Aplikasi

Membuat dan mengelola situs, aplikasi, dan direktori virtual adalah tugas yang paling umum dihadapi administrator. IIS 7 ke atas menggunakan hierarki penahanan yang lebih ketat daripada versi sebelumnya yang berfungsi seperti ini:

  1. Situs Web Situs Web menerima permintaan pada titik akhir pengikatan tertentu yang ditentukan oleh alamat IP dan header host. Misalnya, url ini mewakili situs Web yang terikat ke port 81: http://www.mysite.com:81.

    Situs Web berisi satu atau beberapa aplikasi.

  2. Aplikasi Aplikasi diwakili oleh jalur virtualnya dalam namespace url situs Web. Misalnya, aplikasi dengan jalur virtual "/app1" dapat diwakili oleh url ini: http://www.mysite.com:81/app1.

    Aplikasi milik satu kumpulan aplikasi.

    Aplikasi berisi satu atau beberapa direktori virtual.

  3. Direktori Virtual Direktori virtual diwakili oleh jalur virtualnya dalam namespace url aplikasi. Misalnya, direktori virtual dengan jalur virtual "/vdir1" dapat diwakili oleh url ini: http://www.mysite.com:81/app1/vdir1.

    Direktori virtual memetakan ke lokasi fisik pada disk.

Hierarki ini berbeda dengan IIS 6.0 di mana situs Web dapat berisi campuran direktori dan aplikasi virtual, dan aplikasi hanyalah direktori virtual yang ditandai secara khusus.

Kumpulan Aplikasi Kumpulan aplikasi menentukan sekelompok pengaturan untuk proses pekerja yang melakukan pemrosesan permintaan untuk aplikasi di kumpulan aplikasi tersebut. Kumpulan aplikasi bukan bagian dari hierarki site-app-vdir. Setiap aplikasi menentukan kumpulan aplikasi mana yang akan dijalankannya, atau berjalan di kumpulan aplikasi default. Kumpulan aplikasi mendefinisikan sejumlah pengaturan proses pekerja, seperti versi CLR yang dimuat olehnya, mode integrasi .NET, akun tempat proses pekerja berjalan, dan memproses pengaturan daur ulang.

Secara default, IIS 7 ke atas diinstal dengan situs Web bernama "Situs Web Default" yang mendengarkan pada port 80 tanpa alamat IP atau pembatasan header host. Situs Web ini memiliki aplikasi akar, dan aplikasi tersebut memiliki direktori virtual akar. Ada juga kumpulan aplikasi bernama "DefaultAppPool" yang digunakan oleh semua aplikasi baru secara default.

Baris perintah ini akan mencantumkan semua Situs, termasuk Situs Web Default:

%systemroot%\system32\inetsrv\APPCMD list sites
SITE "Default Web Site" (id:1,bindings:HTTP/*:80:,state:Started)

Mari kita periksa aplikasi milik Situs Web Default dengan menentukan properti site.name saat mencantumkan Aplikasi:

%systemroot%\system32\inetsrv\APPCMD list apps /site.name:"Default Web Site"
APP "Default Web Site/" (applicationPool:DefaultAppPool)

Perintah serupa akan mencantumkan direktori virtual di dalam aplikasi "Situs Web Default/" dengan menentukan properti app.name saat mencantumkan Vdirs:

%systemroot%\system32\inetsrv\APPCMD list vdirs /app.name:"Default Web Site/"
VDIR "Default Web Site/" (physicalPath:C:\inetpub\wwwroot)

Terakhir, mari kita periksa kumpulan aplikasi:

%systemroot%\system32\inetsrv\APPCMD list apppools
APPPOOL "DefaultAppPool" (MgdVersion:v2.0,MgdMode:Integrated,state:Started)
APPPOOL "Classic .NET AppPool" (MgdVersion:v2.0,MgdMode:ISAPI,state:Started)

Membuat Situs, Aplikasi, Direktori Virtual, dan Kumpulan Aplikasi

Sekarang, kita akan membuat situs Web baru bernama "MySite", dengan id situs 2 yang mendengarkan di port 81 untuk semua alamat IP dan header host:

%systemroot%\system32\inetsrv\APPCMD add site /name:MySite /id:2 /bindings:http/*:81: /physicalPath:C:\inetpub\mysite
SITE object "MySite" added
APP object "MySite/" added
VDIR object "MySite/" added

Parameter nama harus ditentukan untuk membuat situs Web. Parameter id bersifat opsional, dan akan menyebabkan AppCmd menghasilkan id situs berikutnya yang tersedia untuk situs baru jika dihilangkan. Kami juga menentukan pengikatan dan parameter physicalPath , yang dijelaskan di bawah ini. Anda juga dapat menentukan properti tambahan untuk mengatur nilainya.

Properti pengikatan menggunakan format protokol/bindingInformation, di mana bindingInformation khusus untuk protokol. Untuk HTTP, dalam format IP:PORT:HOSTHEADER. Anda dapat menentukan beberapa pengikatan dengan menggunakan koma untuk memisahkan setiap definisi.

Kami juga menentukan properti physicalPath untuk situs. Meskipun situs Web itu sendiri tidak memiliki jalur fisik, bentuk pendek ini digunakan untuk membuat situs Web dengan mudah dengan aplikasi akar dan direktori virtual akar yang dipetakan ke jalur fisik yang ditentukan.

Jika Anda tidak menentukan jalur fisik, situs Web akan dibuat tanpa aplikasi; aplikasi dan direktori virtual perlu dibuat untuk aplikasi tersebut secara eksplisit.

Mari kita lanjutkan dan tambahkan aplikasi lain ke situs Web:

%systemroot%\system32\inetsrv\APPCMD add app /site.name:MySite /path:/app1 /physicalPath:C:\inetpub\mysite\app1
APP object "MySite/app1" added
VDIR object "MySite/app1/" added

Ini membuat aplikasi baru dengan jalur virtual "/app1" milik situs yang kami buat di atas, dengan direktori virtual akar menunjuk ke C:\inetpub\mysite\app1. Parameter jalur yang diperlukan menentukan jalur virtual aplikasi baru, dan parameter site.name yang diperlukan menentukan situs tempat aplikasi akan berada. Parameter physicalPath opsional adalah pintasan, seperti dalam kasus Situs, yang membuat direktori virtual akar bersama dengan aplikasi.

Jika Anda tidak menentukan parameter physicalPath , atau ingin menambahkan direktori virtual lain ke aplikasi, gunakan baris perintah seperti ini:

%systemroot%\system32\inetsrv\APPCMD add vdir /app.name:"MySite/app1" /path:/vdir1 /physicalPath:C:\inetpub\mysite\app1\vdir1
VDIR object "MySite/app1/vdir1" added

Ini membuat direktori virtual baru dengan jalur virtual "/vdir1" milik aplikasi yang kami buat di atas dan menunjuk ke C:\inetpub\mysite\app1\vdir1. Parameter jalur yang diperlukan menentukan jalur virtual direktori virtual baru, dan parameter app.name yang diperlukan menentukan aplikasi tempat direktori virtual akan berada. Parameter physicalPath menentukan lokasi fisik direktori virtual.

Terakhir, mari kita buat kumpulan aplikasi baru:

%systemroot%\system32\inetsrv\APPCMD add apppool /name:MyAppPool
APPPOOL object "MyAppPool" added

Ini membuat kumpulan aplikasi baru bernama "MyAppPool".

Untuk mempelajari selengkapnya tentang situs, aplikasi, dan direktori virtual di IIS 7 ke atas, dan opsi yang Anda miliki dalam membuatnya dengan AppCmd, lihat Membuat Situs IIS7 dan Di Atas, Aplikasi, dan Direktori virtual.

Mengonfigurasi Situs, Aplikasi, Direktori Virtual, dan Kumpulan Aplikasi

Sebelumnya, kami menambahkan situs Web baru, lengkap dengan beberapa aplikasi dan direktori virtual. Sekarang, kita akan menggunakan AppCmd untuk memodifikasi beberapa propertinya. Semua objek AppCmd mendukung sintaks standar yang sama untuk mengatur properti:

APPCMD SET <OBJECT> <ID> [ /property:value ]*

Pertama, mari kita tampilkan aplikasi yang tersedia di komputer:

%systemroot%\system32\inetsrv\APPCMD list apps
APP "Default Web Site/" (applicationPool:DefaultAppPool)
APP "MySite/" (applicationPool:DefaultAppPool)
APP "MySite/app1" (applicationPool:DefaultAppPool)

Perhatikan dua aplikasi yang kami buat sebelumnya di bawah situs Web "MySite". Kedua aplikasi ini diatur untuk menggunakan kumpulan aplikasi DefaultAppPool. Mari kita ubah properti applicationPool dari aplikasi akar "MySite/" untuk menggunakan kumpulan aplikasi baru yang kita buat sebelumnya bernama "MyAppPool":

%systemroot%\system32\inetsrv\APPCMD set app "MySite/" /applicationPool:MyAppPool
APP object "MySite/" changed

Ini mengubah nilai properti applicationPool dari aplikasi "MySite/" ke nilai baru, secara efektif memindahkan aplikasi ke kumpulan aplikasi baru.

Alasan kami memindahkan aplikasi ke kumpulan aplikasi baru adalah agar kami dapat mengubah beberapa parameter runtime dari proses pekerja tempat aplikasi ini akan berjalan. Untuk melakukannya, kami akan mengubah beberapa properti di kumpulan aplikasi "MyAppPool". Sebelum mengubah nilai properti, jika sering berguna untuk terlebih dahulu menampilkan properti yang tersedia dan nilainya saat ini. Kita dapat melakukannya dengan mencantumkan aplikasi kita dalam tampilan terperinci:

%systemroot%\system32\inetsrv\APPCMD list apppool "MyAppPool" /text:*
APPPOOL
  APPPOOL.NAME: MyAppPool
  managedPipelineMode: Integrated
  managedRuntimeVersion: v2.0
  state: Started
  [add]
    name:"MyAppPool"
    queueLength:"1000"
    autoStart:"true"
    enable32BitAppOnWin64:"false"
    managedRuntimeVersion:"v2.0"
    managedPipelineMode:"Integrated"
    passAnonymousToken:"true"
    [processModel]
      identityType:"NetworkService"
      userName:""
      password:""
...
      pingingEnabled:"true"
...

Perhatikan jumlah properti pada objek kumpulan aplikasi; output penuh tidak ditampilkan di sini.

Kami tertarik untuk mengubah properti managedRuntimeVersion menjadi "v1.1" untuk menjalankan aplikasi kami di kumpulan aplikasi ini dengan ASP.NET v1.1. Berikut adalah baris perintah untuk melakukan itu:

%systemroot%\system32\inetsrv\APPCMD set apppool "MyAppPool" /managedRuntimeVersion:v1.1
APPPOOL object "MyAppPool" changed

Anda dapat melihat dari output Daftar di atas bahwa ada banyak properti yang tersedia pada objek kumpulan aplikasi, dan beberapa properti disarangkan dalam sub-elemen konfigurasi. Misalnya, opsi proses disarangkan di bawah sub-elemen "processModel".

Jika Anda ingin mengatur properti berlapis, atasi dengan notasi jalur elemen seperti ini:

%systemroot%\system32\inetsrv\APPCMD set apppool "MyAppPool" /processModel.pingingEnabled:false

Elemen Konfigurasi Lainnya

Selain memanipulasi properti konfigurasi dengan objek AppCmd tingkat atas, Anda dapat mengatur properti konfigurasi pada bagian konfigurasi apa pun, termasuk yang terkait dengan objek AppCmd tingkat atas. Ini tercakup kemudian di bagian bernama "Bekerja dengan Konfigurasi".

Memeriksa Status Server

AppCmd menyediakan fungsionalitas untuk memeriksa berbagai aspek status runtime server, termasuk:

  • status situs
  • status kumpulan aplikasi
  • proses pekerja server aktif
  • saat ini menjalankan permintaan

Selain itu, beberapa objek menyediakan perintah yang memungkinkan Anda mengontrol status runtime mereka, seperti perintah STOP objek Situs dan perintah DAUR ULANG objek AppPool.

Memeriksa Status Kumpulan Situs dan Aplikasi

Status situs dan kumpulan aplikasi dilaporkan dari properti status setiap objek. Saat mencantumkan situs atau kumpulan aplikasi, status ditampilkan dalam output default. Contohnya:

%systemroot%\system32\inetsrv\APPCMD list apppools DefaultAppPool
APPPOOL "DefaultAppPool" (MgdVersion:v2.0,MgdMode:Integrated,state:Started)

Properti status juga dapat digunakan untuk mencari situs atau kumpulan aplikasi yang berada dalam status tertentu. Misalnya, untuk menemukan semua kumpulan aplikasi yang dimulai:

%systemroot%\system32\inetsrv\APPCMD list apppools /state:started
APPPOOL "DefaultAppPool" (MgdVersion:v2.0,MgdMode:Integrated,state:Started)
APPPOOL "Classic .NET AppPool" (MgdVersion:v2.0,MgdMode:ISAPI,state:Started)

Memeriksa Proses Pekerja yang Sedang Berjalan

Anda dapat menggunakan objek WP (proses pekerja) untuk mencantumkan proses pekerja yang sedang berjalan:

%systemroot%\system32\inetsrv\APPCMD list wps
WP "3577" (apppool:DefaultAppPool)

Setiap objek WP memiliki properti apppool.name , yang memungkinkan Anda untuk mencantumkan semua proses pekerja yang sedang berjalan untuk kumpulan aplikasi tertentu:

%systemroot%\system32\inetsrv\APPCMD list wps /apppool.name:DefaultAppPool
WP "3577" (apppool:DefaultAppPool)

Memeriksa Permintaan yang Sedang Dijalankan

Objek Permintaan memungkinkan Anda memeriksa permintaan yang saat ini dijalankan di server:

%systemroot%\system32\inetsrv\APPCMD list requests
REQUEST "fb0000008000000e" (url:GET /wait.aspx?time=10000,time:4276 msec,client:localhost)

Daftar dapat dibatasi untuk permintaan situs, kumpulan aplikasi, proses pekerja, atau url tertentu dengan menggunakan properti yang sesuai untuk memfilter hasilnya. Berikut adalah beberapa contohnya:

%systemroot%\system32\inetsrv\APPCMD list request /apppool.name:DefaultAppPool

%systemroot%\system32\inetsrv\
APPCMD list requests /wp.name:3567

%systemroot%\system32\inetsrv\APPCMD list requests /site.id:1

Bekerja dengan Konfigurasi

IIS 7 ke atas memiliki sistem konfigurasi hierarkis berbasis XML yang mirip dengan sistem konfigurasi ASP.NET yang menyimpan konfigurasi server di bagian XML skema. Konfigurasi dapat terletak di tingkat server ApplicationHost.config file, atau ditempatkan dalam file konfigurasi Web.config terdistribusi dalam hierarki aplikasi Anda.

AppCmd memungkinkan inspeksi penuh dan pengeditan hierarki konfigurasi dari baris perintah melalui objek Konfigurasinya. Selain itu, AppCmd menyediakan fungsi berguna lainnya seperti membersihkan konfigurasi, mengunci dan membuka kuncinya, dan mencarinya.

Menampilkan Konfigurasi

AppCmd berfungsi dengan konfigurasi pada tingkat bagian konfigurasi. Setiap bagian konfigurasi biasanya menjelaskan fitur server, dan mungkin berisi satu atau beberapa sub-elemen dan koleksi.

Konfigurasi dapat diatur untuk namespace url arbitrer, seperti untuk situs, aplikasi, atau url. Pengaturan konfigurasi yang diatur pada tingkat yang lebih tinggi diwarisi oleh semua tingkat yang lebih rendah kecuali secara khusus ditimpa pada tingkat yang lebih rendah.

Untuk menampilkan konfigurasi efektif untuk tingkat url tertentu, gunakan perintah LIST dari objek Config sebagai berikut:

%systemroot%\system32\inetsrv\APPCMD list config <URL> /section:SectionName

Di mana <URL> adalah jalur konfigurasi di mana konfigurasi efektif harus dibaca, seperti "Situs Web Default/" atau "Situs Web Default/app1/hello.html". Jika tidak ditentukan, defaultnya ke tingkat server.

Untuk mempelajari selengkapnya tentang hierarki konfigurasi IIS dan cara membuat jalur konfigurasi IIS untuk digunakan dengan AppCmd dan alat lainnya, lihat Anatomi Jalur Konfigurasi IIS7 dan Di Atas.

Parameter bagian menentukan bagian konfigurasi yang ingin Anda baca. Jika tidak ditentukan, semua bagian konfigurasi yang efektif di tingkat URL akan ditampilkan. Misalnya, baris perintah ini menampilkan semua konfigurasi efektif untuk aplikasi akar Situs Web Default:

%systemroot%\system32\inetsrv\APPCMD list config "Default Web Site/"

Untuk mencantumkan bagian tertentu, gunakan baris perintah seperti ini:

%systemroot%\system32\inetsrv\APPCMD list config "Default Web Site/" /section:asp
<system.webServer>
  <asp>
    <session />
    <comPlus />
    <cache />
    <limits />
</asp>
</system.webServer>

Secara default, AppCmd hanya menampilkan konfigurasi yang diatur secara eksplisit. Jika Anda ingin menampilkan konfigurasi efektif termasuk nilai yang diwariskan atau default, tentukan parameter /config:*:

%systemroot%\system32\inetsrv\APPCMD list config "Default Web Site/" /section:asp /config:*

Untuk menampilkan daftar bagian konfigurasi yang tersedia, gunakan baris perintah ini:

%systemroot%\system32\inetsrv\APPCMD list config /section:?

Mengedit Properti Konfigurasi

Di AppCmd, setiap bagian konfigurasi diekspos sebagai instans objek konfigurasi yang mengekspos properti yang mewakili bagian konfigurasi yang mendasar. Gunakan perintah SET objek Config untuk mengubah properti ini. Sintaksnya adalah:

APPCMD set config <URL> /section:SectionName [ /property:value ]+

<URL> bersifat opsional; ini menentukan pada jalur konfigurasi apa perubahan harus diterapkan. Ini dihilangkan, perubahan akan diterapkan di tingkat server, untuk diwarisi oleh semua URL.

Parameter bagian diperlukan; ini menunjukkan bagian yang sedang diedit.

Misalnya, untuk mengatur properti appAllowClientDebug dari bagian ASP untuk http://localhost/app1 url:

%systemroot%\system32\inetsrv\APPCMD set config "http://localhost/app1" /section:asp /appAllowClientDebug:false
CONFIG object "asp" changed

Untuk mengatur properti konfigurasi yang ditumpuk dalam sub-elemen bagian konfigurasi, gunakan notasi jalur elemen ini:

%systemroot%\system32\inetsrv\APPCMD set config "http://localhost/app1" /section:asp /limits.requestQueueMax:4000
CONFIG object "asp" changed

Tentukan lebih dari satu properti dalam satu baris perintah untuk melakukan beberapa pengeditan dalam bagian konfigurasi yang sama.

Untuk menampilkan semua properti yang dapat diatur pada bagian konfigurasi tertentu, gunakan baris perintah ini:

%systemroot%\system32\inetsrv\APPCMD set config /section:asp /?

Catatan

Perhatikan bahwa bagian asp dikunci secara default, jadi menjalankan perintah ini akan mengembalikan kesalahan pelanggaran kunci. Anda dapat membuka kunci bagian ini terlebih dahulu, mengatur konfigurasi di tingkat server dengan menghilangkan <URL>, atau menerapkannya ke tag lokasi tingkat server dengan menggunakan /commit:apphost. Lihat mengontrol lokasi konfigurasi lebih lanjut di artikel.

Mengedit Koleksi Konfigurasi

AppCmd juga menyediakan dukungan untuk mengedit koleksi konfigurasi. Koleksi konfigurasi dapat berisi beberapa elemen — misalnya, bagian konfigurasi system.webServer/modules berisi daftar elemen konfigurasi modul yang menentukan modul yang dijalankan oleh server.

Untuk mengatur properti pada elemen koleksi, tentukan elemen koleksi tertentu untuk diedit dengan menggunakan ekspresi pengindeks koleksi dalam notasi jalur elemen. Ekspresi pengindeks koleksi menggunakan nilai kunci untuk mengidentifikasi elemen koleksi tertentu. Pengindeks memiliki format berikut:

[key1='value1',key2='value2',...]

Jumlah kunci yang diperlukan untuk mengidentifikasi elemen secara unik tergantung pada koleksi. Sebagian besar koleksi hanya memerlukan satu kunci.

Misalnya, untuk mengatur properti jenis pada elemen koleksi dengan properti nama kunci yang sama dengan "FormsAuthentication", gunakan baris perintah ini:

%systemroot%\system32\inetsrv\APPCMD set config /section:system.webServer/modules /[name='FormsAuthentication'].type:System.Web.Security.FormsAuthenticationModule

Untuk menambahkan elemen koleksi baru, awali notasi jalur elemen dengan tanda plus, +. Dalam ekspresi pengindeks koleksi, berikan nilai untuk setiap properti kunci. Properti non-kunci tambahan juga dapat disertakan dalam ekspresi pengindeks koleksi. Misalnya, ini akan menambahkan elemen koleksi modul baru:

%systemroot%\system32\inetsrv\APPCMD set config /section:system.webServer/modules /+[name='MyModule',type='MyType']

Untuk menghapus elemen koleksi, awali notasi jalur elemen dengan tanda minus, -:

%systemroot%\system32\inetsrv\APPCMD set config /section:system.webServer/modules /-[name='MyModule']

Mengontrol Lokasi Konfigurasi

Sistem konfigurasi bersifat hierarkis, memungkinkan pengaturan konfigurasi ditulis di beberapa tingkat mulai dari file ApplicationHost.config tingkat server hingga file Web.config terdistribusi yang dapat ada di tingkat direktori situs, aplikasi, atau virtual.

Ketika konfigurasi ditulis pada tingkat tertentu, konfigurasi diwariskan oleh semua URL pada tingkat tersebut dan lebih rendah. Misalnya, konfigurasi yang diatur dalam file konfigurasi Web.config di akar situs yang diwarisi oleh semua URL situs.

Secara default, AppCmd akan menulis konfigurasi pada tingkat di mana ia sedang diatur. Misalnya, jika Anda mengatur konfigurasi untuk "Situs Web Default/", itu akan ditulis dalam file Web.config di akar situs tersebut.

Namun, dimungkinkan untuk menulis konfigurasi pada tingkat yang lebih tinggi, dan hanya menerapkannya ke subset URL tertentu di bawah ini dengan menggunakan konstruksi lokasi . Misalnya, Web.config aplikasi dapat berisi konfigurasi yang hanya diterapkan ke satu direktori dalam aplikasi tersebut. AppCmd menyediakan kemampuan ini melalui parameter penerapannya .

Parameter penerapan dapat diatur ke salah satu hal berikut:

  • (dihilangkan) — default; tulis konfigurasi pada tingkat yang diatur
  • url — sama seperti default; tulis konfigurasi pada tingkat yang diatur
  • site — tulis konfigurasi di Web.config di akar situs url yang diatur
  • app — tulis konfigurasi di Web.config di akar aplikasi url yang diatur
  • apphost — tulis konfigurasi di tingkat server, dalam file applicationHost.config
  • <PATH> — tulis konfigurasi pada jalur konfigurasi yang ditentukan

Misalnya, baris perintah ini menonaktifkan penjelajahan direktori untuk aplikasi, dan menulis konfigurasi tersebut dalam file Web.config akar situs:

%systemroot%\system32\inetsrv\APPCMD set config http://localhost/app1/ /section:directoryBrowse /enabled:false /commit:site

Untuk mempelajari selengkapnya tentang jalur konfigurasi IIS dan mengontrol lokasi konfigurasi, lihat Anatomi jalur konfigurasi IIS7 ke atas.

Mengunci dan Membuka Kunci Konfigurasi

Sistem konfigurasi memungkinkan bagian konfigurasi dikunci pada tingkat tertentu, mencegah propertinya ditimpa pada tingkat yang lebih rendah. Ini dapat digunakan untuk mencegah aplikasi mengubah pengaturan yang ingin diterapkan administrator server.

Secara default, sebagian besar bagian konfigurasi IIS dikunci di tingkat server. Untuk mengonfigurasi bagian ini pada tingkat yang lebih rendah, bagian tersebut perlu dibuka kuncinya. AppCmd menyediakan perintah UNLOCK untuk tujuan ini:

%systemroot%\system32\inetsrv\APPCMD unlock config /section:asp

Gunakan perintah LOCK untuk mengunci bagian:

%systemroot%\system32\inetsrv\APPCMD lock config /section:asp

Perhatikan bahwa jika Anda mengunci bagian konfigurasi, semua aplikasi yang mungkin telah mengonfigurasi bagian tersebut pada tingkat yang lebih rendah akan mengalami kesalahan pelanggaran kunci saat mencoba mengakses bagian konfigurasi.

Konfigurasi Pencarian

AppCmd dapat mencari hierarki konfigurasi terdistribusi untuk semua lokasi yang mengatur properti konfigurasi atau nilai properti tertentu. Fitur pencarian konfigurasi dapat digunakan untuk menentukan lokasi tempat fitur tertentu diaktifkan, atau untuk memastikan kepatuhan dengan persyaratan konfigurasi tertentu.

Untuk mencari server untuk semua lokasi yang menentukan konfigurasi, Anda dapat menggunakan perintah SEARCH tanpa argumen:

%systemroot%\system32\inetsrv\APPCMD search config

Untuk mencari semua lokasi di bawah jalur konfigurasi tertentu, seperti semua lokasi konfigurasi untuk situs tertentu, sertakan jalur pada baris perintah:

%systemroot%\system32\inetsrv\APPCMD search config "Default Web Site/"

Untuk mencari lokasi yang mengonfigurasi bagian konfigurasi tertentu:

%systemroot%\system32\inetsrv\APPCMD search config "Default Web Site/" /section:directoryBrowse

Untuk mencari lokasi yang mengatur properti tertentu, sertakan nama properti:

%systemroot%\system32\inetsrv\APPCMD search config "Default Web Site/" /section:directoryBrowse /enabled

Dan akhirnya, untuk mencari lokasi yang mengatur properti ke nilai tertentu:

%systemroot%\system32\inetsrv\APPCMD search config "Default Web Site/" /section:directoryBrowse /enabled:true

Bekerja dengan Output Alat

Sebelumnya, kami menyebutkan bahwa output perintah LIST adalah daftar instans objek. AppCmd menawarkan mode output berbeda yang memungkinkan kontrol atas tingkat detail yang ditampilkan tentang setiap objek.

Default Output

Mari kita ambil Situs LIST sebagai contoh. Secara default, AppCmd menggunakan format output ringkas:

%systemroot%\system32\inetsrv\APPCMD list sites
SITE "Default Web Site" (id:1,bindings:HTTP/*:80:,state:Started)
SITE "Site1" (id:2,bindings:http/*:81:,state:Started)
SITE "Site2" (id:3,bindings:http/*:82:,state:Stopped)

Dalam format output ini, setiap instans objek berada di satu baris, menentukan jenis objek (SITE), dan pengidentifikasi objek ("Situs Web Default"). Beberapa properti umum atau penting umumnya juga output (id, pengikatan, dan status untuk objek Situs).

Output Terperinci

Sebagian besar objek mendukung secara signifikan lebih banyak properti daripada yang disajikan dalam output default. Untuk menampilkan semua properti objek, tentukan parameter text:*. Properti setiap instans akan ditampilkan dalam format pohon hierarkis:

APPCMD list site "Default Web Site" /text:*
SITE
  SITE.NAME: Default Web Site
  SITE.ID: 2
  bindings: http/*:80:
  state: Started
...

Dalam contoh di atas, output telah disingkat — output aktual mencakup lebih banyak properti.

Output untuk Bekerja Dengan Alat Baris Perintah Lainnya

AppCmd menyediakan mode output yang hanya menampilkan properti tertentu dari setiap instans objek. Tentukan nama properti yang akan ditampilkan dengan parameter text:<PROPERTY> . Misalnya, perintah ini akan mengembalikan semua instans direktori virtual yang tersedia, hanya menampilkan properti physicalPath dari masing-masing:

%systemroot%\system32\inetsrv\APPCMD list vdirs /text:physicalPath
C:\inetpub\wwwroot
C:\inetpub\vdir1
D:\vdir2

Anda tentu saja dapat menampilkan salah satu properti valid dari jenis objek yang dicantumkan.

Terkadang diinginkan untuk menggunakan output AppCmd dengan alat baris perintah dan perintah shell yang ada, seperti perintah FOR dan FINDSTR.EXE. Alat-alat ini sering bekerja paling baik ketika setiap item data yang menarik terletak di baris terpisah.

Sebagai contoh, bayangkan baris perintah yang menghasilkan daftar direktori setiap direktori virtual IIS. Baris perintah perlu memperoleh daftar jalur fisik dari setiap direktori virtual yang diminati, lalu menjalankan perintah DIR pada masing-masing jalur tersebut menggunakan perintah FOR untuk mengulangnya:

FOR /F %f IN ('%systemroot%\system32\inetsrv\APPCMD list vdir /text:physicalPath') DO CALL DIR %f

Output Konfigurasi

Banyak objek berisi data konfigurasi yang berasal langsung dari bagian konfigurasi terkait. Objek Konfigurasi adalah contoh utamanya, dan berfungsi sebagai pembungkus langsung atas sistem konfigurasi IIS — setiap instans objek yang dikembalikan oleh objek Konfigurasi adalah bagian konfigurasi. Objek lain, seperti Situs, juga berisi informasi konfigurasi sebagai bagian dari properti objek.

Jika Anda ingin menampilkan informasi konfigurasi untuk objek yang dikembalikan dalam format XML mentah dari sistem konfigurasi, Anda dapat menggunakan parameter konfigurasi . Misalnya, untuk menampilkan informasi konfigurasi XML untuk objek situs, gunakan baris perintah seperti ini:

%systemroot%\system32\inetsrv\APPCMD list site "Default Web Site" /config
<site name="Default Web Site" id="1">
  <bindings>
        <binding protocol="HTTP" bindingInformation="*:80:" />
...

XML Output

Alat ini juga mendukung format output XML sendiri, yang menghasilkan tataan hasil XML yang terbentuk dengan baik untuk objek yang dikembalikan dari eksekusi perintah. Ini memungkinkan beberapa kemampuan menarik yang membedakan AppCmd dari alat baris perintah sebelumnya yang disediakan oleh tim IIS.

  • Membangun tugas manajemen yang kompleks. Tujuan utama dari kemampuan ini adalah untuk mengaktifkan kumpulan hasil yang dihasilkan oleh AppCmd untuk dimasukkan ke perintah AppCmd lain. Ini memungkinkan Anda untuk dengan cepat menjalankan tugas manajemen yang kompleks tanpa menulis kode aplikasi.
  • Melakukan operasi batch secara efisien. Menjalankan alat dalam jumlah besar saat melakukan sejumlah besar operasi (misalnya membuat 10.000 situs) mungkin lambat karena overhead pembuatan dan inisialisasi proses untuk setiap operasi. Sebagai gantinya, perintah alat tunggal dapat dijalankan melalui data input yang terkandung dalam himpunan data XML, secara dramatis mengurangi waktu eksekusi pemrosesan data input.
  • Mengekspor data ke alat lain. Format XML memungkinkan himpunan data yang dihasilkan oleh AppCmd untuk digunakan dengan alat lain untuk memproses, menyimpan, atau memberikan pelaporan. Misalnya, data AppCmd dapat digunakan dengan transformasi XSLT ke laporan manajemen HTML umum, diimpor ke SQL Server 2005 untuk analisis lebih lanjut, atau dimuat oleh ADO.NET untuk pemrosesan terprogram.

Misalnya, untuk menghasilkan daftar situs dalam mode XML:

%systemroot%\system32\inetsrv\APPCMD list sites /xml

Untuk mempelajari selengkapnya tentang fitur pipa, dan cara memanfaatkannya untuk manajemen baris perintah yang kuat, lihat http://mvolo.com/do-complex-iis-management-tasks-easily-with-appcmd-command-piping/.

Ringkasan

Dalam gambaran umum ini, kami membiasakan Anda dengan semua perintah canggih yang berbeda yang tersedia menggunakan utilitas Command-Line IIS 7 ke atas, AppCmd.exe.

Anda juga dapat menemukan lebih banyak topik AppCmd dan mempelajari cara ampuh untuk mengelola server Anda dari baris perintah di blog saya, di http://mvolo.com/category/appcmd/.