Ho uno script PowerShell che configura le impostazioni del sito Web e dell'applicazione Web in IIS. Quindi utilizzo i cmdlet nello snap in WebAdministration. Ma questo script deve essere eseguito su Windows 2008, Windows 7 e Windows 2008 R2. E ho bisogno che funzioni con il minimo rumore da parte dell'utente.PowerShell: carica WebAdministration nello script ps1 su IIS 7 e IIS 7.5
Il problema è che Windows 7 e Windows 2008 R2 utilizzano IIS 7.5 fornito con WebAdministration installato come modulo. In Windows 2008 abbiamo installato il provider PowerShell di IIS 7, che installa WebAdministration come un gioco da ragazzi in.
Così tra cui import-module WebAdministration nello script fa saltare in aria su IIS 7, ma funziona bene su IIS 7.5 e comprendente add pssnapin WebAdministration fa esplodere su IIS 7.5, ma funziona bene su IIS 7.
Quindi la nostra soluzione è quello di rendere gli amministratori caricano WebAdministration manualmente con il comando appropriato per l'ambiente prima di eseguire lo script. Ma questo non è ottimale in quanto è facile dimenticare quale comando funziona in quale ambiente. Potremmo creare due diversi script, ma questo crea un problema di manutenzione per lo sviluppo.
Qualcuno ha risolto questo problema? Qualcuno sa come controllare l'ambiente e quindi chiamare il cmdlet appropriato dallo script PS?
--- RISPOSTA (per la mia situazione) ----
La soluzione è una combinazione di codice e console pre-configurato. IIS 7 PoSH Provider include un collegamento sul desktop che avvia una console PoSH con WebAdministration caricata. Quello combinato con la seguente funzione rende il mio script eseguito come un incantesimo su tutti e tre i sistemi.
Function Load-WebAdmin {
$webAdminModule = get-module -ListAvailable
| ? { $_.Name -eq "webadministration" }
If ($webAdminModule -ne $null) {
import-module WebAdministration
}
}
L'unico problema è che mentre ** import-module ** può essere eseguito più volte senza generare un errore anche se il modulo è già caricato, ** add-pssnapin ** genera un errore se lo snap-in è già caricato. Grazie per l'ispirazione per una soluzione praticabile. –
Questo potrebbe essere risolto con una seconda chiamata a ps-snapin per vedere se è già caricato nella sessione corrente – GrayWizardx
1. Perché il secondo blocco usa 'Seleziona' invece di' Dove'? 2. '$ hasSnapin' sembra un nome scarsamente scelto. O dovrebbe esserci qualcosa che trasforma la lista in un booleano o il nome dovrebbe avere "ha" all'inizio. – jpmc26