Question IIS6: Modifier la liste des IPs allowed or denied

Plus d'informations
il y a 15 ans 4 mois #3317 par Tarik
Bonjour,

Je désire modifier la metabase d'IIS avec powershell.
Je n'ai pas réussi à trouver un autre moyen qu'utiliser ADSI pour acceder à l'objet IPSecurity qui permet d'appliquer des permissions au service d'IIS W3SVC.
[code:1]
$IIsWebVirtualDirObj = [ADSI]\"IIS://$server/W3SVC\"
$IIsIPSecurityObj = $IIsWebVirtualDirObj.Get(\"IPSecurity\"«»)[/code:1]

Ensuite, je veux appliquer un Deny à tous les computers, sauf à un certain nombre d'IP.
Pour ce faire:
[code:1][System.__ComObject].InvokeMember(\"GrantByDefault\",[System.Reflection.BindingFlags]::«»SetProperty,$null,$IIsIPSecurityObj,$False)

#' Insert a new exception.
[Array]$IPList = [System.__ComObject].InvokeMember(\"IPGrant\",[System.Reflection.BindingFlags]::GetProperty,$null,$IIsIPSecurityObj,$null)
If ($IPList.Count -eq 0){
write-host \"INFO: Currently no IP Addresses are allowed\"
}else{
write-host \"INFO: Currently \" $IPList.Count \" IP Addresses are allowed\"
}
$IPList = $IPList + \"123.0.0.1,255.255.255.0\"
$str = new-object System.String \"121.1.0.1,255.255.255.0\"
$str = $str + \"121.1.0.2,255.255.255.0\"
$str = $str + \"121.1.0.3,255.255.255.0\"
[System.__ComObject].InvokeMember(\"IPGrant\",[System.Reflection.BindingFlags]::«»SetProperty,$null,$IIsIPSecurityObj,$str)
[/code:1]
Cependant, Ce code n'ajoute qu'une seule IP dans le tableau IPGrant. J'ai chercher plusieurs solutions mais sans succès.

toute aide est bienvenue...

Merci à vous

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 4 mois #3321 par Laurent Dardenne
Salut,
Tartar écrit:

toute aide est bienvenue...

Le problème se situe peut être sur le type de l'objet contenant les adresses IP, voir :
support.microsoft.com/kb/810913/fr
msdn.microsoft.com/en-us/library/ms524354.aspx
As-tu essayé :
- d'appeler IPGrant avec un array au lieu d'une chaine ?
-de 'faire un split(\",\")' sur la chaîne ?

Tu es obligé de passer par COM pour manipuler les membres, ils ne sont pas accessibles par PSBase ?

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 4 mois #3322 par Tarik

- d'appeler IPGrant avec un array au lieu d'une chaine ?

Oui

-de 'faire un split(\",\")' sur la chaîne ?

Non, que veux tu dire?

Tu es obligé de passer par COM pour manipuler les membres, ils ne sont pas accessibles par PSBase ?

Oui, j'ai essayé des centaines de façon d'accéder aux propriétés mais sans succès. psbase.properties(\"IPSecurity\"), Get ou encore tout simplement $IISobj.IPSecurity...

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 4 mois #3346 par Laurent Dardenne
Tartar écrit:

Non, que veux tu dire?

Je pensais que les 2 adresses n'étaient pas associées alors qu'elle le sont. Autant pour moi.

Oui, j'ai essayé des centaines de façon d'accéder aux propriétés mais sans succès.

Effectivment pas moyen d'y accéder autrement.
Sinon j'en suis au même point que toi :S
Pourtant d'après ce code C# ton approche devrait fonctionner, peut être ajouter ceci en fin de traitement ce qui ne régle pas le pb pour autant :/
[code:1]
$IIsWebVirtualDirObj.Invoke(\"Put\", @(\"IPSecurity\", $IIsIPSecurityObj));
$IIsWebVirtualDirObj.CommitChanges()
[/code:1]

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.070 secondes
Propulsé par Kunena