2009-12-07 4 views
1

Nous travaillons sur l'automatisation du déploiement de certaines applications IIS. J'ai utilisé cscript.exe dans un fichier batch Windows pour créer l'application web et autres. Il y a cependant quelques réglages actuellement faits à la main que je dois automatiser. À savoir, si vous regardez les propriétés d'une application, sous Structure de répertoire -> Authentification et contrôle d'accès -> Modifier, je dois décocher Activer l'accès anonyme et vérifier l'authentification Windows intégrée.Comment paramétrer les méthodes d'authentification dans IIS

Existe-t-il un moyen facile de le faire à partir d'un fichier batch Windows?

EDIT: Je dois préciser que c'est IIS 6.0, donc appcmd n'est pas disponible.

+0

Vous pourriez envisager d'utiliser Windows PowerShell pour ce type de tâche dans le futur. Bien que la syntaxe soit maladroite, elle permet l'accès aux classes .NET, etc. et est significativement plus puissante que les fichiers vbscript ou batch. –

+0

Que faites-vous exactement dans le script que vous exécutez avec cscript.exe? Créez-vous le site dans ce script? Ou utilisez-vous 'IIsWeb.vbs' dans le fichier batch? – Kev

+0

J'ai mis à jour ma réponse avec un exemple d'extrait de cscript. – Kev

Répondre

1

je répondu à une question très similaire un petit quelque temps. L'exemple utilise l'outil asdutil.vbs que vous pouvez appeler à partir de votre fichier batch:

Setting NTAuthenticationProviders at an Application level in IIS 6 (Stack Overflow)

Mise à jour:

Parce que vous avez déjà un script CScript pour créer la site Web, vous pouvez simplement définir le AuthFlags dans le script:

'' Some values just as an example 
iisNumber = 668 
ipAddress = "172.16.3.200" 
hostName = "myserver.com" 
wwwfolder = "c:\mysites\www" 


Dim serverBindings(1) 
serverBindings(0) = ipAddress & ":80:www." & hostName 
serverBindings(1) = ipAddress & ":80:" & hostName 


'' Create server 
Set w3svc = GetObject("IIS://localhost/w3svc") 
Set newWebServer = w3svc.Create("IIsWebServer", iisNumber) 
newWebServer.ServerBindings = serverBindings 
newWebServer.ServerComment = "Server is: " & hostName 
newWebServer.SetInfo 

'' Create /root app 
Set rootApp = newWebServer.Create("IIsWebVirtualDir", "ROOT") 
rootApp.Path = wwwFolder 
rootApp.AccessRead = true 
rootApp.AccessScript = true 
rootApp.AppCreate(True) 
rootApp.AuthFlags = 4 '' <== Set AuthFlags here 
rootApp.SetInfo 
+0

Très utile, mais une question, le script que vous avez fourni fonctionne sur l'application web par défaut (1) comme vous l'avez souligné. Comment savoir d'un point de vue programmatique, l'identifiant de l'application, pour une application autre que l'application par défaut? Je connais son nom, mais Windows génère l'identifiant. –

2
+0

Je suppose que je poserais la même question que j'ai posée à Kev. Cette commande du lien fonctionne comme annoncé: adsutil.vbs set w3svc/1/root/Authflags 4 Cependant, je veux exécuter cette commande dans le cadre de l'installation d'une nouvelle application. L'application telle qu'installée actuellement a un identifiant de 208223887, donc je voudrais: adsutil.vbs set w3svc/208223887/root/Authflags 4 mais je ne connais pas cette valeur tant que l'application n'est pas installée. Y at-il un moyen de l'obtenir en tant que variable après l'étape d'installation afin que je puisse le remplacer dans cette commande plus bas dans mon script? –

0
Dim sSitePath = "1" 'Set the site ID here 
Set oSite = GetObject("IIS://localhost/" & sSitePath & "/root") 

Select Case oSite.AuthFlags 
    Case 1 
    Wscript.Echo "Anonymous" 
    Case 2 
    Wscript.Echo "Basic" 
    Case 4 
    Wscript.Echo "NTLM" 
    Case 6 
    Wscript.Echo "MD5" 
    Case 64 
    Wscript.Echo "Passport" 
End Select 
Questions connexes