Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Informazioni generali
AppCmd.exe è lo strumento da riga di comando singolo per la gestione di IIS 7 e versioni successive. Espone tutte le funzionalità di gestione dei server chiave tramite un set di oggetti di gestione intuitivi che possono essere modificati dalla riga di comando o dagli script.
AppCmd consente di controllare facilmente il server senza usare uno strumento di amministrazione grafica e di automatizzare rapidamente le attività di gestione del server senza scrivere codice.
Alcune delle operazioni che è possibile eseguire con AppCmd:
- Creare e configurare siti, app, pool di applicazioni e directory virtuali
- Avviare e arrestare i siti e riciclare i pool di applicazioni
- Elencare i processi di lavoro in esecuzione ed esaminare le richieste attualmente in esecuzione
- Eseguire ricerche, modificare, esportare e importare IIS e ASP.NET configurazione
AppCmd consente anche agli amministratori del server di creare attività di gestione avanzate semplicemente combinando più comandi AppCmd.exe più semplici o riutilizzando l'output dello strumento all'interno di un altro programma.
È anche possibile trovare altri argomenti di AppCmd e apprendere metodi avanzati per gestire il server dalla riga di comando nel blog personale, all'indirizzo https://mvolo.com/category/appcmd/.
Come usare AppCmd.exe
La riga di comando AppCmd.exe si basa su un set di oggetti di gestione server di primo livello, ad esempio Sito e Applicazione. Questi oggetti espongono metodi che possono essere usati per eseguire varie azioni su tali oggetti e le istanze di oggetti espongono proprietà che possono essere esaminate e modificate.
Ad esempio, l'oggetto Site fornisce metodi per elencare, creare ed eliminare istanze del sito (questi sono metodi standard presenti in quasi tutti gli oggetti), nonché arrestare e avviare siti. Ogni istanza del sito conterrà a sua volta proprietà, ad esempio il nome del sito e l'ID del sito, che possono essere ispezionate, cercate o impostate. L'output di ogni comando è sempre un elenco di istanze di oggetti.
Annotazioni
AppCmd.exe si trova nella %systemroot%\system32\inetsrv\ directory . Poiché non fa parte di PATH automaticamente, è necessario usare il percorso completo del file eseguibile durante l'esecuzione di comandi come in %systemroot%\system32\inetsrv\AppCmd.exe list sites. In alternativa, è possibile aggiungere manualmente la directory inetsrv al percorso del computer in modo da poter accedere AppCmd.exe direttamente da qualsiasi posizione.
Lo strumento funziona eseguendo un comando su uno degli oggetti di gestione supportati, con parametri facoltativi usati per personalizzare ulteriormente il comportamento del comando:
APPCMD (command) (object-type) <identifier> < /parameter1:value1 ... >*
Dove <COMMAND> è uno dei comandi supportati da <OBJECT>. La maggior parte degli oggetti supporta questo set di comandi di base:
- ELENCO Visualizzare gli oggetti nel computer. Un ID< facoltativo >può specificare un oggetto univoco da elencare oppure è possibile specificare uno o più parametri per la corrispondenza con le proprietà dell'oggetto.
- AGGIUNGERE Creare un nuovo oggetto con le proprietà dell'oggetto specificate da impostare durante la creazione.
- ELIMINA Eliminare l'oggetto specificato dall'ID<>.
- IMPOSTARE Impostare i parametri sull'oggetto specificato dall'ID<>.
Un oggetto spesso supporterà comandi aggiuntivi, ad esempio START e STOP per l'oggetto Site.
Ad esempio, il set corrente di oggetti disponibili tramite AppCmd è (dove <OBJECT> è uno degli oggetti di gestione supportati dallo strumento):
| oggetto | Descrizione |
|---|---|
| Sito | Amministrazione dei siti virtuali |
| Applicazione | Amministrazione delle applicazioni |
| VDir | Amministrazione delle directory virtuali |
| Apppool | Amministrazione dei pool di applicazioni |
| Config | Amministrazione delle sezioni generali di configurazione |
| Backup | Gestione dei backup di configurazione del server |
| WP | Amministrazione dei processi di lavoro |
| Richiedi | Visualizzazione delle richieste HTTP attive |
| Modulo | Amministrazione dei moduli server |
| Traccia | Gestione dei log di traccia del server |
Dove <ID> è l'identificatore specifico dell'oggetto per l'istanza dell'oggetto da specificare per il comando. Il formato dell'identificatore è specifico di ogni tipo di oggetto. Ad esempio, l'oggetto Site usa il nome del sito, l'oggetto App usa il percorso dell'applicazione e l'oggetto AppPool usa il nome del pool di applicazioni.
Dove [ /parameter:value ]* è zero o più parametri per il comando. Ogni comando supporta un set diverso di parametri, a seconda dell'oggetto . In genere, i comandi che cercano oggetti o modificano le proprietà degli oggetti consentiranno di specificare una delle proprietà dell'oggetto come parametro.
Lo strumento stesso supporta anche una serie di parametri che influiscono sull'esecuzione generale del comando e non sono specifici per nessuno degli oggetti. Questi elementi sono elencati nella pagina della Guida di primo livello disponibile in "AppCmd.exe /?"e includono parametri come /text, /config e /xml per controllare l'output degli strumenti e /commit per controllare la posizione delle modifiche alla configurazione.
Ottenere assistenza
AppCmd offre una guida autodescrittiva che può essere usata come riferimento per tutti gli oggetti e i comandi supportati. Sono disponibili tre tipi di assistenza durante il drill-through dell'attività che si vuole eseguire.
Guida generale
La schermata della Guida generale mostra gli oggetti supportati dallo strumento, nonché i parametri degli strumenti generalmente applicabili. Per visualizzare la Guida generale:
APPCMD /?
Le prime righe di output sono:
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
...
Guida all'oggetto
La schermata della Guida dell'oggetto mostra i comandi supportati da un oggetto specifico. Per visualizzare la Guida dell'oggetto:
APPCMD <OBJECT> /?
dove <OBJECT> è uno dei tipi di oggetto supportati. Ad esempio, questa riga di comando visualizzerà la Guida per l'oggetto sito:
APPCMD site /?
Guida ai comandi
La schermata della Guida del comando descrive la sintassi per un comando e un oggetto specifici, inclusi i parametri supportati ed esempi di attività comuni. Per visualizzare la Guida ai comandi:
APPCMD <COMMAND> <OBJECT> /?
Ad esempio, questo comando della riga di comando mostrerà le istruzioni per il comando LIST dell'oggetto App.
APPCMD list app /?
Ricerca di oggetti con il comando LIST
Il comando LIST è il comando più versatile ed è supportato da tutti gli oggetti. Lo scopo di questo comando è trovare istanze dell'oggetto in base ai criteri specificati. L'output di questo comando è un elenco di istanze di oggetti, che è possibile esaminare visualizzando le relative proprietà, esportando per la ricreazione futura in un altro computer o usando un altro comando per eseguire azioni su di essi.
Elenco di tutti gli oggetti
Il modo più semplice per usare il comando LIST è senza parametri, che elenca semplicemente tutte le istanze note dell'oggetto:
APPCMD list <OBJECT>
Ad esempio, per elencare tutti i siti nel computer, usare questa riga di comando:
%systemroot%\system32\inetsrv\APPCMD list sites
L'output sarà simile al seguente:
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)
Per impostazione predefinita, ogni oggetto viene visualizzato su una singola riga, specificando il relativo identificatore specifico dell'oggetto (ad esempio "Sito Web predefinito") e una o più proprietà importanti (ad esempio ID, associazioni e stato).
Elenco di un oggetto specifico
Il comando LIST può essere usato per trovare un'istanza di un oggetto specifico denominato usando una riga di comando in questo formato:
APPCMD list <OBJECT> <ID>
Ad esempio, usare questa riga di comando per trovare il sito con un ID univoco "Sito Web predefinito":
%systemroot%\system32\inetsrv\APPCMD list site "Default Web Site"
Elenco di oggetti che soddisfano una query
Per trovare tutte le istanze dell'oggetto che soddisfano criteri specifici, specificare uno o più parametri che indicano i valori delle proprietà degli oggetti da trovare. Ad esempio, usare questa riga di comando per trovare tutti i siti fermati:
%systemroot%\system32\inetsrv\APPCMD list sites /state:Stopped
È possibile specificare un numero qualsiasi di coppie di valori di proprietà e lo strumento assicurerà che gli oggetti restituiti soddisfino tutti i criteri specificati. Ad esempio, usare questa riga di comando per trovare i siti arrestati e configurati per non avviarsi automaticamente:
%systemroot%\system32\inetsrv\APPCMD list sites /serverAutoStart:false /state:Stopped
Modifica di oggetti con ADD, SET e DELETE
Oltre a LIST, la maggior parte degli oggetti supporta anche i comandi ADD, SET e DELETE.
Aggiunta di nuovi oggetti
Il comando ADD crea una nuova istanza di un oggetto . Ad esempio, questa riga di comando creerà un nuovo sito:
%systemroot%\system32\inetsrv\APPCMD add site /name:MyNewSite /bindings:"http/*:81:" /physicalPath:"C:\MyNewSite"
A seconda dell'oggetto, alcuni parametri saranno necessari per impostare le proprietà necessarie nella nuova istanza e altre proprietà potrebbero essere facoltative. Se non è specificato un parametro obbligatorio, verrà restituito un errore.
La schermata di aiuto del comando indica quali parametri sono necessari. Ad esempio, usare questa riga di comando per vedere quali parametri sono necessari per aggiungere un sito:
%systemroot%\system32\inetsrv\APPCMD add site /?
Leggere per altre informazioni sulla creazione di siti, applicazioni, directory virtuali e pool di applicazioni con AppCmd.
Modifica di oggetti esistenti
Il comando SET imposta una o più proprietà in un'istanza dell'oggetto specificata. Questo comando richiede che venga specificato l'identificatore specifico dell'oggetto. Ad esempio, per modificare la proprietà id del "Sito Web predefinito", usare questa riga di comando:
%systemroot%\system32\inetsrv\APPCMD set site "Default Web Site" /id:200
Usare una forma della sintassi del comando di aiuto per vedere quali proprietà possono essere impostate su un oggetto specifico. Ad esempio, per visualizzare le proprietà supportate dal sito Web predefinito usare:
%systemroot%\system32\inetsrv\APPCMD set site "Default Web Site" /?
Eliminazione di oggetti
Il comando DELETE elimina un'istanza di un oggetto . Analogamente a SET, questo comando richiede anche l'identificatore specifico dell'oggetto da specificare. Ad esempio, usare questa riga di comando per eliminare il sito denominato "MyNewSite":
%systemroot%\system32\inetsrv\APPCMD delete site "MyNewSite"
Gestione dei backup
AppCmd consente di creare e ripristinare i backup della configurazione globale del server. È possibile usarlo per eseguire il ripristino da modifiche indesiderate alla configurazione del server e tornare allo stato del server valido. È consigliabile creare un backup prima di modificare la configurazione del server o installare un componente che lo modifica. Ogni backup contiene la copia del ApplicationHost.config file di configurazione radice corrente, nonché altri stati correlati a livello di server, tra cui la configurazione FTP e la configurazione dello strumento di amministrazione IIS.
Per creare un backup, usare il comando ADD dell'oggetto Backup:
%systemroot%\system32\inetsrv\APPCMD add backup
BACKUP object "20060519T172530" added
In questo modo è stato creato un backup con un nome generato automaticamente che rappresenta la data e l'ora del backup.
Un nome specifico per il backup può essere specificato come segue:
%systemroot%\system32\inetsrv\APPCMD add backup MyBackup
BACKUP object "MyBackup" added
È possibile visualizzare un elenco dei backup disponibili usando il comando LIST dell'oggetto Backup:
%systemroot%\system32\inetsrv\APPCMD list backups
BACKUP "20060519T172530"
BACKUP "MyBackup"
Infine, per ripristinare un backup, usare il comando RESTORE con il nome del backup:
%systemroot%\system32\inetsrv\APPCMD restore backup "MyBackup"
Restored configuration from backup "MyBackup"
Il ripristino di un backup arresta il server e ripristina lo stato della configurazione globale al momento della creazione del backup.
In Windows Server® 2008 e Windows Vista SP1, AppCmd sarà anche in grado di usare backup periodici della configurazione eseguiti dal servizio cronologia configurazione. Questi backup verranno visualizzati nell'elenco AppCmd dei backup e saranno disponibili per ripristinare lo stesso modo dei backup eseguiti manualmente tramite lo strumento.
Per altre informazioni sulla gestione dei backup di configurazione con AppCmd, vedere http://mvolo.com/most-important-appcmd-commands-backing-up-and-restoring-iis7-configuration/.
Lavorare con siti, applicazioni, directory virtuali e pool di applicazioni
La creazione e la gestione di siti, applicazioni e directory virtuali sono le attività più comuni affrontate dagli amministratori. IIS 7 e versioni successive usano una gerarchia di contenimento più restrittiva rispetto alle versioni precedenti che funzionano come segue:
Sito Web Un sito Web riceve richieste su endpoint di associazione specifici definiti da indirizzi IP e intestazioni host. Ad esempio, questo URL rappresenta un sito Web associato alla porta 81:
http://www.mysite.com:81.Un sito Web contiene una o più applicazioni.
Applicazione Un'applicazione è rappresentata dal percorso virtuale all'interno dello spazio dei nomi URL di un sito Web. Ad esempio, un'applicazione con un percorso virtuale "/app1" può essere rappresentata da questo URL:
http://www.mysite.com:81/app1.Un'applicazione appartiene a un pool di applicazioni.
Un'applicazione contiene una o più directory virtuali.
Directory virtuale Una directory virtuale è rappresentata dal percorso virtuale all'interno dello spazio dei nomi URL di un'applicazione. Ad esempio, una directory virtuale con un percorso virtuale "/vdir1" può essere rappresentata da questo URL:
http://www.mysite.com:81/app1/vdir1.Una directory virtuale esegue il mapping a una posizione fisica su disco.
Questa gerarchia è diversa da IIS 6.0 in cui un sito Web può contenere una combinazione di directory virtuali e applicazioni e le applicazioni sono solo directory virtuali contrassegnate appositamente.
Pool di applicazioni Un pool di applicazioni specifica un gruppo di impostazioni per i processi di lavoro che eseguono l'elaborazione delle richieste per le applicazioni nel pool di applicazioni. I pool di applicazioni non fanno parte della gerarchia site-app-vdir. Ogni applicazione specifica il pool di applicazioni in cui verrà eseguito o viene eseguito nel pool di applicazioni predefinito. Il pool di applicazioni definisce una serie di impostazioni del processo di lavoro, ad esempio la versione di CLR caricata da essa, la modalità di integrazione .NET, l'account con cui viene eseguito il processo di lavoro e le impostazioni di riciclo del processo di lavoro.
Per impostazione predefinita, IIS 7 e versioni successive viene installato con un sito Web denominato "Sito Web predefinito" che è in ascolto di default sulla porta 80 senza restrizioni su indirizzi IP né sull'intestazione host. Questo sito Web ha un'applicazione principale e tale applicazione ha una directory virtuale radice. Esiste anche un pool di applicazioni denominato "DefaultAppPool" che viene usato da tutte le nuove applicazioni per impostazione predefinita.
Questa riga di comando elenca tutti i siti, incluso il sito Web predefinito:
%systemroot%\system32\inetsrv\APPCMD list sites
SITE "Default Web Site" (id:1,bindings:HTTP/*:80:,state:Started)
Esaminiamo le applicazioni che appartengono al sito Web predefinito specificando la proprietà site.name durante l'elenco delle app:
%systemroot%\system32\inetsrv\APPCMD list apps /site.name:"Default Web Site"
APP "Default Web Site/" (applicationPool:DefaultAppPool)
Un comando simile elenca le directory virtuali all'interno dell'applicazione "Sito Web predefinito/" specificando la proprietà app.name durante l'elenco di Vdirs:
%systemroot%\system32\inetsrv\APPCMD list vdirs /app.name:"Default Web Site/"
VDIR "Default Web Site/" (physicalPath:C:\inetpub\wwwroot)
Infine, esaminiamo i pool di applicazioni:
%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)
Creazione di siti, applicazioni, directory virtuali e pool di applicazioni
A questo punto verrà creato un nuovo sito Web denominato "Sito personale", con ID sito 2 in ascolto sulla porta 81 per tutti gli indirizzi IP e le intestazioni 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
I parametri del nome devono essere specificati per creare un sito Web. Il parametro id è facoltativo e fa sì che AppCmd generi l'ID sito disponibile successivo per il nuovo sito se omesso. Vengono inoltre specificati i binding e i parametri physicalPath , illustrati di seguito. È anche possibile specificare proprietà aggiuntive per impostare i relativi valori.
La proprietà bindings usa il formato di protocollo/bindingInformation, dove bindingInformation è specifico del protocollo. Per HTTP, è nel formato IP:PORT:HOSTHEADER. È possibile specificare più associazioni usando una virgola per separare ogni definizione.
È stata specificata anche una proprietà physicalPath per il sito. Anche se un sito Web stesso non dispone di un percorso fisico, questo breve formato viene usato per creare facilmente un sito Web con un'applicazione radice e una directory virtuale radice mappata al percorso fisico specificato.
Se non si specifica un percorso fisico, il sito Web verrà creato senza applicazioni; sarà necessario creare un'applicazione e una directory virtuale in modo esplicito.
Si procederà e si aggiungerà un'altra applicazione al sito 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
In questo modo è stata creata una nuova applicazione con percorso virtuale "/app1" appartenente al sito creato in precedenza, con una directory virtuale radice che punta a C:\inetpub\mysite\app1. Il parametro percorso obbligatorio specifica il percorso virtuale della nuova applicazione e il parametro site.name obbligatorio specifica il sito a cui appartiene l'applicazione. Il parametro physicalPath facoltativo è una scorciatoia, come nel caso del Sito, che crea una directory virtuale principale insieme all'applicazione.
Se non si specifica il parametro physicalPath o si vuole aggiungere un'altra directory virtuale all'applicazione, usare una riga di comando simile alla seguente:
%systemroot%\system32\inetsrv\APPCMD add vdir /app.name:"MySite/app1" /path:/vdir1 /physicalPath:C:\inetpub\mysite\app1\vdir1
VDIR object "MySite/app1/vdir1" added
In questo modo è stata creata una nuova directory virtuale con percorso virtuale "/vdir1" appartenente all'applicazione creata in precedenza e che punta a C:\inetpub\mysite\app1\vdir1. Il parametro percorso obbligatorio specifica il percorso virtuale della nuova directory virtuale e il parametro app.name obbligatorio specifica l'applicazione a cui appartiene la directory virtuale. Il parametro physicalPath specifica la posizione fisica della directory virtuale.
Creare infine un nuovo pool di applicazioni:
%systemroot%\system32\inetsrv\APPCMD add apppool /name:MyAppPool
APPPOOL object "MyAppPool" added
In questo modo è stato creato un nuovo pool di applicazioni denominato "MyAppPool".
Per altre informazioni su siti, applicazioni e directory virtuali in IIS 7 e versioni successive e sulle opzioni disponibili per la creazione con AppCmd, vedere Creazione di siti IIS7 e versioni successive, applicazioni e directory virtuali.
Configurazione di siti, applicazioni, directory virtuali e pool di applicazioni
In precedenza è stato aggiunto un nuovo sito Web, completo di alcune applicazioni e directory virtuali. Ora si userà AppCmd per modificare alcune delle relative proprietà. Tutti gli oggetti AppCmd supportano la stessa sintassi standard per l'impostazione delle proprietà:
APPCMD SET <OBJECT> <ID> [ /property:value ]*
Prima di tutto, verranno visualizzate le applicazioni disponibili nel computer:
%systemroot%\system32\inetsrv\APPCMD list apps
APP "Default Web Site/" (applicationPool:DefaultAppPool)
APP "MySite/" (applicationPool:DefaultAppPool)
APP "MySite/app1" (applicationPool:DefaultAppPool)
Si notino le due applicazioni create in precedenza nel sito Web "MySite". Entrambe queste applicazioni sono impostate per l'uso del pool di applicazioni DefaultAppPool. Modificare la proprietà applicationPool dell'applicazione radice "MySite/" per usare il nuovo pool di applicazioni creato in precedenza denominato "MyAppPool":
%systemroot%\system32\inetsrv\APPCMD set app "MySite/" /applicationPool:MyAppPool
APP object "MySite/" changed
In questo modo il valore della proprietà applicationPool dell'applicazione "MySite/" è stato modificato nel nuovo valore, spostando l'applicazione nel nuovo pool di applicazioni.
Il motivo per cui l'applicazione è stata spostata nel nuovo pool di applicazioni è in modo da poter modificare alcuni dei parametri di runtime del processo di lavoro all'interno del quale verrà eseguita l'applicazione. A tale scopo, verranno modificate alcune delle proprietà nel pool di applicazioni "MyAppPool". Prima di modificare i valori delle proprietà, è utile prima di tutto visualizzare le proprietà disponibili e i relativi valori correnti. È possibile eseguire questa operazione elencando l'applicazione in visualizzazione dettagliata:
%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"
...
Nota il numero di proprietà nell'oggetto application pool; l'output completo non viene visualizzato qui.
Siamo interessati a modificare la proprietà managedRuntimeVersion in "v1.1" per eseguire le applicazioni nel pool con ASP.NET v1.1. Ecco la riga di comando per eseguire questa operazione:
%systemroot%\system32\inetsrv\APPCMD set apppool "MyAppPool" /managedRuntimeVersion:v1.1
APPPOOL object "MyAppPool" changed
Dal precedente output elenco, è possibile osservare che sono disponibili numerose proprietà nel pool di applicazioni e alcune delle proprietà sono annidate all'interno di un sottoelemento di configurazione. Ad esempio, le opzioni di processo sono annidate sotto l'elemento secondario "processModel".
Se si vuole impostare una proprietà annidata, indirizzarla con la notazione del percorso dell'elemento come segue:
%systemroot%\system32\inetsrv\APPCMD set apppool "MyAppPool" /processModel.pingingEnabled:false
Altri elementi di configurazione
Oltre a modificare le proprietà di configurazione con gli oggetti AppCmd di primo livello, è possibile impostare le proprietà di configurazione in qualsiasi sezione di configurazione, incluse quelle associate agli oggetti AppCmd di primo livello. Questo argomento viene trattato più avanti nella sezione denominata "Lavorare con la configurazione".
Controllo dello stato del server
AppCmd offre funzionalità per esaminare vari aspetti dello stato di runtime del server, tra cui:
- stato del sito
- stato del pool di applicazioni
- processi di lavoro del server attivi
- attualmente in esecuzione delle richieste
Inoltre, alcuni oggetti forniscono comandi che consentono di controllare il relativo stato di runtime, ad esempio il comando STOP dell'oggetto Site e il comando RECYCLE dell'oggetto AppPool.
Controllo dello stato del sito e del pool di applicazioni
Lo stato dei siti e dei pool di applicazioni viene segnalato dalla proprietà di stato di ogni oggetto. Quando si elencano siti o pool di applicazioni, lo stato viene visualizzato nell'output predefinito. Per esempio:
%systemroot%\system32\inetsrv\APPCMD list apppools DefaultAppPool
APPPOOL "DefaultAppPool" (MgdVersion:v2.0,MgdMode:Integrated,state:Started)
La proprietà di stato può essere usata anche per cercare siti o pool di applicazioni in uno stato specifico. Ad esempio, per trovare tutti i pool di applicazioni avviati:
%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)
Controllo dei processi di lavoro in esecuzione
È possibile usare l'oggetto WP (processo di lavoro) per elencare i processi di lavoro in esecuzione:
%systemroot%\system32\inetsrv\APPCMD list wps
WP "3577" (apppool:DefaultAppPool)
Ogni oggetto WP ha una proprietà apppool.name , che consente di elencare tutti i processi di lavoro in esecuzione per un determinato pool di applicazioni:
%systemroot%\system32\inetsrv\APPCMD list wps /apppool.name:DefaultAppPool
WP "3577" (apppool:DefaultAppPool)
Controllo delle richieste attualmente in esecuzione
L'oggetto Request consente di controllare le richieste attualmente in esecuzione nel server:
%systemroot%\system32\inetsrv\APPCMD list requests
REQUEST "fb0000008000000e" (url:GET /wait.aspx?time=10000,time:4276 msec,client:localhost)
L'elenco può essere limitato alle richieste di un determinato sito, pool di applicazioni, processo di lavoro o URL usando la proprietà appropriata per filtrare i risultati. Ecco alcuni esempi:
%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
Lavorare con la configurazione
IIS 7 e versioni successive includono un sistema di configurazione gerarchico basato su XML simile al sistema di configurazione ASP.NET che archivia la configurazione del server nelle sezioni XML schematizzate. La configurazione può essere posizionata a livello di server ApplicationHost.config file o inserita in file di configurazione Web.config distribuiti all'interno della gerarchia dell'applicazione.
AppCmd consente l'ispezione completa e la modifica della gerarchia di configurazione dalla riga di comando tramite il relativo oggetto Config. AppCmd offre anche altre funzioni utili, ad esempio la cancellazione della configurazione, il blocco e lo sblocco e la ricerca.
Visualizzazione della configurazione
AppCmd funziona con la configurazione a livello di sezioni di configurazione. Ogni sezione di configurazione descrive in genere una funzionalità del server e può contenere uno o più sottoelementi e raccolte.
La configurazione può essere impostata per uno spazio dei nomi url arbitrario, ad esempio per un sito, un'applicazione o un URL. Le impostazioni di configurazione impostate a un livello superiore vengono ereditate da tutti i livelli inferiori, a meno che non vengano sostituite specificamente a livelli inferiori.
Per visualizzare una configurazione efficace per un determinato livello di URL, usare il comando LIST dell'oggetto Config come indicato di seguito:
%systemroot%\system32\inetsrv\APPCMD list config <URL> /section:SectionName
Dove <URL> è il percorso di configurazione in cui deve essere letta la configurazione effettiva, ad esempio "Sito Web predefinito/" o "Sito Web predefinito/app1/hello.html". Se non specificato, il valore predefinito è a livello di server.
Per altre informazioni sulla gerarchia di configurazione iis e su come compilare percorsi di configurazione IIS da usare con AppCmd e altri strumenti, vedere Anatomia di un percorso di configurazione IIS7 e versioni successive.
Il parametro della sezione specifica la sezione di configurazione da leggere. Se non specificato, verranno visualizzate tutte le sezioni di configurazione valide a livello di URL. Ad esempio, questa riga di comando visualizza tutte le configurazioni valide per l'applicazione radice del sito Web predefinito:
%systemroot%\system32\inetsrv\APPCMD list config "Default Web Site/"
Per elencare una sezione specifica, usare una riga di comando simile alla seguente:
%systemroot%\system32\inetsrv\APPCMD list config "Default Web Site/" /section:asp
<system.webServer>
<asp>
<session />
<comPlus />
<cache />
<limits />
</asp>
</system.webServer>
Per impostazione predefinita, AppCmd visualizza solo la configurazione impostata in modo esplicito. Se si vuole visualizzare la configurazione effettiva, inclusi i valori ereditati o predefiniti, specificare il parametro /config:* :
%systemroot%\system32\inetsrv\APPCMD list config "Default Web Site/" /section:asp /config:*
Per visualizzare un elenco delle sezioni di configurazione disponibili, usare questa riga di comando:
%systemroot%\system32\inetsrv\APPCMD list config /section:?
Modifica delle proprietà di configurazione
In AppCmd ogni sezione di configurazione viene esposta come istanza di un oggetto di configurazione che espone le proprietà che rappresentano la sezione di configurazione sottostante. Usare il comando SET dell'oggetto Config per modificare queste proprietà. La sintassi è:
APPCMD set config <URL> /section:SectionName [ /property:value ]+
<URL> è facoltativo; specifica in quale percorso di configurazione deve essere applicata la modifica. Se omessa, le modifiche verranno applicate al livello del server, per essere ereditate da tutti gli URL.
Il parametro della sezione è obbligatorio; indica la sezione da modificare.
Ad esempio, per impostare la proprietà appAllowClientDebug della sezione ASP per l'URL http://localhost/app1 :
%systemroot%\system32\inetsrv\APPCMD set config "http://localhost/app1" /section:asp /appAllowClientDebug:false
CONFIG object "asp" changed
Per impostare le proprietà di configurazione annidate all'interno di sottoelementi della sezione di configurazione, usare questa notazione del percorso dell'elemento:
%systemroot%\system32\inetsrv\APPCMD set config "http://localhost/app1" /section:asp /limits.requestQueueMax:4000
CONFIG object "asp" changed
Specificare più proprietà in una singola riga di comando per apportare più modifiche all'interno della stessa sezione di configurazione.
Per visualizzare tutte le proprietà che possono essere impostate in una sezione di configurazione specifica, usare questa riga di comando:
%systemroot%\system32\inetsrv\APPCMD set config /section:asp /?
Annotazioni
Si noti che la sezione asp è bloccata per impostazione predefinita, pertanto l'esecuzione di questi comandi restituirà un errore di violazione del blocco. È possibile sbloccare prima questa sezione, impostare la configurazione a livello di server omettendo <URL>, oppure inviarli al server utilizzando il tag di posizione con /commit:apphost. Vedere il controllo della posizione della configurazione più avanti nell'articolo.
Modifica delle raccolte di configurazione
AppCmd offre anche il supporto per la modifica delle raccolte di configurazione. Una raccolta di configurazione può contenere più elementi, ad esempio la sezione di configurazione system.webServer/modules contiene un elenco di elementi di configurazione del modulo che specificano i moduli eseguiti dal server.
Per impostare una proprietà su un elemento della raccolta, specificare l'elemento della raccolta da modificare utilizzando un'espressione dell'indicizzatore di raccolta all'interno della notazione del percorso dell'elemento. L'espressione dell'indicizzatore di raccolta usa valori chiave per identificare un elemento di raccolta specifico. L'indicizzatore ha il formato seguente:
[key1='value1',key2='value2',...]
Il numero di chiavi necessarie per identificare in modo univoco un elemento dipende dalla raccolta. La maggior parte delle raccolte richiede una sola chiave.
Ad esempio, per impostare la proprietà type sull'elemento collection con la proprietà key name uguale a "FormsAuthentication", usare questa riga di comando:
%systemroot%\system32\inetsrv\APPCMD set config /section:system.webServer/modules /[name='FormsAuthentication'].type:System.Web.Security.FormsAuthenticationModule
Per aggiungere un nuovo elemento della raccolta, anteporre alla notazione del percorso dell'elemento un segno più, +. All'interno dell'espressione dell'indicizzatore della raccolta specificare i valori per ogni proprietà chiave. È anche possibile includere proprietà aggiuntive non chiave all'interno dell'espressione dell'indicizzatore di raccolta. Ad esempio, verrà aggiunto un nuovo elemento raccolta moduli:
%systemroot%\system32\inetsrv\APPCMD set config /section:system.webServer/modules /+[name='MyModule',type='MyType']
Per eliminare un elemento della raccolta, anteporre la notazione del percorso dell'elemento con un segno meno, -:
%systemroot%\system32\inetsrv\APPCMD set config /section:system.webServer/modules /-[name='MyModule']
Controllo della posizione della configurazione
Il sistema di configurazione è gerarchico, consentendo la scrittura delle impostazioni di configurazione a più livelli, dal file di ApplicationHost.config a livello di server ai file Web.config distribuiti che possono essere presenti a livello di sito, applicazione o directory virtuale.
Quando la configurazione viene scritta a un determinato livello, viene ereditata da tutti gli URL a quel livello e inferiore. Ad esempio, la configurazione impostata nel file di configurazione Web.config alla radice del sito è ereditata da tutti gli URL del sito.
Per impostazione predefinita, AppCmd scriverà la configurazione al livello in cui è impostata. Ad esempio, se si imposta la configurazione per il "Sito Web predefinito/", verrà scritto in un file Web.config nella radice del sito.
Tuttavia, è possibile scrivere la configurazione a un livello superiore e applicarla solo a un determinato subset di URL di seguito usando un costrutto di posizione . Ad esempio, l'applicazione Web.config può contenere la configurazione applicata a una sola directory all'interno dell'applicazione. AppCmd fornisce questa funzionalità tramite il relativo parametro di commit .
Il parametro commit può essere impostato su uno dei seguenti:
- (omesso) — impostazione predefinita; configurazione di scrittura a livello per il quale è impostato
- url — identico all'impostazione predefinita; scrittura della configurazione al livello a cui è impostata
- site : scrivere la configurazione nel Web.config nella radice del sito dell'URL per cui è impostata
- app : scrivere la configurazione nel Web.config nella radice dell'app dell'URL per cui è impostata
- apphost : configurazione di scrittura a livello di server, nel file applicationHost.config
-
<PATH>— scrivere la configurazione nel percorso di configurazione specificato
Ad esempio, questa riga di comando disattiva l'esplorazione della directory per un'applicazione e scrive tale configurazione all'interno del file Web.config della radice del sito:
%systemroot%\system32\inetsrv\APPCMD set config http://localhost/app1/ /section:directoryBrowse /enabled:false /commit:site
Per altre informazioni sui percorsi di configurazione di IIS e sul controllo della posizione della configurazione, vedere Anatomia del percorso di configurazione IIS7 e versioni successive.
Configurazione di blocco e sblocco
Il sistema di configurazione consente di bloccare le sezioni di configurazione a un determinato livello, impedendo l'override delle relative proprietà a livelli inferiori. Può essere usato per impedire alle applicazioni di modificare le impostazioni che l'amministratore del server desidera applicare.
Per impostazione predefinita, la maggior parte delle sezioni di configurazione iis è bloccata a livello di server. Per configurare queste sezioni a livelli inferiori, è necessario sbloccare queste sezioni. AppCmd fornisce il comando UNLOCK a questo scopo:
%systemroot%\system32\inetsrv\APPCMD unlock config /section:asp
Usare il comando LOCK per bloccare una sezione:
%systemroot%\system32\inetsrv\APPCMD lock config /section:asp
Si noti che se si blocca una sezione di configurazione, tutte le applicazioni che potrebbero aver già configurato tale sezione a un livello inferiore verificheranno un errore di violazione del blocco quando tentano di accedere alla sezione di configurazione.
Configurazione di ricerca
AppCmd può cercare nella gerarchia di configurazione distribuita tutte le posizioni che impostano specifiche proprietà di configurazione o valori di proprietà. La funzionalità di ricerca della configurazione può essere usata per individuare i percorsi in cui è abilitata una particolare funzionalità o per garantire la conformità a un determinato requisito di configurazione.
Per cercare nel server tutte le posizioni che definiscono la configurazione, è possibile usare il comando SEARCH senza argomenti:
%systemroot%\system32\inetsrv\APPCMD search config
Per cercare tutti i percorsi in un percorso di configurazione specifico, ad esempio tutti i percorsi di configurazione per un determinato sito, includere il percorso nella riga di comando:
%systemroot%\system32\inetsrv\APPCMD search config "Default Web Site/"
Per cercare i percorsi che configurano una particolare sezione di configurazione:
%systemroot%\system32\inetsrv\APPCMD search config "Default Web Site/" /section:directoryBrowse
Per trovare le posizioni che impostano una determinata proprietà, includere il nome della proprietà:
%systemroot%\system32\inetsrv\APPCMD search config "Default Web Site/" /section:directoryBrowse /enabled
Infine, per cercare posizioni che impostano una proprietà su un valore specifico:
%systemroot%\system32\inetsrv\APPCMD search config "Default Web Site/" /section:directoryBrowse /enabled:true
Lavorare con l'output degli strumenti
In precedenza, è stato accennato che l'output del comando LIST è un elenco di istanze di oggetti. AppCmd offre diverse modalità di output che consentono di controllare il livello di dettaglio visualizzato su ogni oggetto.
Output predefinito
Di seguito sono elencati i siti LIST come esempio. Per impostazione predefinita, AppCmd usa un formato di output compatto:
%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)
In questo formato di output, ogni istanza dell'oggetto si trova su una riga, specificando il tipo di oggetto (SITE) e l'identificatore dell'oggetto ("Sito Web predefinito"). Diverse proprietà comuni o importanti sono in genere anche output (ID, associazioni e stato per l'oggetto Site).
Output dettagliato
La maggior parte degli oggetti supporta molte più proprietà rispetto a quelle presentate nell'output predefinito. Per visualizzare tutte le proprietà dell'oggetto, specificare il parametro text:*. Le proprietà di ogni istanza verranno visualizzate in un formato di albero gerarchico:
APPCMD list site "Default Web Site" /text:*
SITE
SITE.NAME: Default Web Site
SITE.ID: 2
bindings: http/*:80:
state: Started
...
Nell'esempio precedente l'output è stato abbreviato. L'output effettivo include molte altre proprietà.
Output per lavorare con altri strumenti da riga di comando
AppCmd fornisce una modalità di output che visualizza solo una proprietà specifica di ogni istanza dell'oggetto. Specificare il nome della proprietà da visualizzare con il parametro text:<PROPERTY> . Ad esempio, questo comando restituirà tutte le istanze di directory virtuali disponibili, visualizzando solo la proprietà physicalPath di ognuno di essi:
%systemroot%\system32\inetsrv\APPCMD list vdirs /text:physicalPath
C:\inetpub\wwwroot
C:\inetpub\vdir1
D:\vdir2
Naturalmente, è possibile visualizzare una qualsiasi delle proprietà valide del tipo di oggetto elencato.
A volte è consigliabile usare l'output di AppCmd con gli strumenti da riga di comando e i comandi della shell esistenti, ad esempio il comando FOR e FINDSTR.EXE. Questi strumenti spesso funzionano meglio quando ogni elemento di dati di interesse si trova in una riga separata.
Si supponga, ad esempio, una riga di comando che produce un elenco di directory di ogni directory virtuale IIS. La riga di comando deve acquisire un elenco di percorsi fisici da ognuna delle directory virtuali di interesse e quindi eseguire un comando DIR in ognuno di questi percorsi usando il comando FOR per eseguirne il ciclo:
FOR /F %f IN ('%systemroot%\system32\inetsrv\APPCMD list vdir /text:physicalPath') DO CALL DIR %f
Output della configurazione
Molti oggetti contengono dati di configurazione provenienti direttamente dalle sezioni di configurazione associate. L'oggetto Config è l'esempio principale di questo e funge da wrapper diretto sul sistema di configurazione IIS. Ogni istanza dell'oggetto restituita dall'oggetto Config è una sezione di configurazione. Altri oggetti, ad esempio Site, contengono anche informazioni di configurazione come parte delle proprietà dell'oggetto.
Se si desidera visualizzare le informazioni di configurazione per gli oggetti restituiti nel formato XML non elaborato del sistema di configurazione, è possibile usare il parametro config . Ad esempio, per visualizzare le informazioni di configurazione XML per l'oggetto sito, usare una riga di comando simile alla seguente:
%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
Lo strumento supporta anche il proprio formato di output XML, che genera set di risultati XML ben formati per gli oggetti restituiti dall'esecuzione del comando. Ciò consente alcune interessanti funzionalità che distinguono AppCmd da qualsiasi strumento da riga di comando precedente fornito dal team IIS.
- Costruzione di attività di gestione complesse. Lo scopo principale di questa capacità è consentire ai set di risultati generati da AppCmd di essere input in un altro comando AppCmd. In questo modo è possibile eseguire rapidamente attività di gestione complesse senza scrivere codice dell'applicazione.
- Esecuzione efficiente di operazioni batch. L'esecuzione dello strumento un numero elevato di volte durante l'esecuzione di un numero elevato di operazioni (ad esempio la creazione di 10.000 siti) può essere lenta a causa del sovraccarico della creazione e dell'inizializzazione del processo per ogni operazione. Al contrario, un singolo comando dello strumento può essere eseguito sui dati di input contenuti in un set di dati XML, riducendo notevolmente il tempo di esecuzione dell'elaborazione dei dati di input.
- Esportazione di dati in altri strumenti. Il formato XML consente di usare i set di dati generati da AppCmd con altri strumenti per elaborare, archiviare o fornire report. Ad esempio, i dati AppCmd possono essere usati con trasformazioni XSLT in report di gestione HTML generali, importati in SQL Server 2005 per ulteriori analisi o caricati da ADO.NET per l'elaborazione a livello di codice.
Ad esempio, per restituire l'elenco dei siti in modalità XML:
%systemroot%\system32\inetsrv\APPCMD list sites /xml
Per altre informazioni sulla funzionalità di piping e su come usarla per una potente gestione della riga di comando, vedere http://mvolo.com/do-complex-iis-management-tasks-easily-with-appcmd-command-piping/.
Sommario
In questa panoramica, vi abbiamo familiarizzato con tutti i comandi potenti disponibili usando l'utility da riga di comando di IIS 7 e versioni successive, AppCmd.exe.
È anche possibile trovare altri argomenti di AppCmd e apprendere metodi avanzati per gestire il server dalla riga di comando nel blog personale, all'indirizzo http://mvolo.com/category/appcmd/.