2013-08-13 1 views
9

Je suis en train de script avec PowerShell l'acte d'ajouter l'utilisateur IIS AppPool \ ASP.NET v4.0 aux utilisateurs Performance Monitor groupe , pour pouvoir utiliser les compteurs de performance personnalisés d'une application ASP.NET. Mais, je ne peux pas comprendre comment adresser l'utilisateur ASP.NET automatiquement créé en utilisant ADSI.Ajouter IIS AppPool ASP.NET v4.0 pour regrouper les fenêtres locales

Cela fonctionne pour moi:

$computer = $env:COMPUTERNAME; 

$user = [ADSI]"WinNT://$computer/Administrator,user" 
$groupToAddTo = "TestGroup" 

$parent = [ADSI]"WinNT://$computer/$groupToAddTo,group" 
$parent.Add($user.Path) 

Cependant, je ne peux pas comprendre comment trouver l'utilisateur v4.0 ASP.NET:

$computer = $env:COMPUTERNAME; 
# $user = [ADSI]"WinNT://$computer/IIS AppPool/ASP.NET v4.0,user" # <-- Doesn't work 

$groupToAddTo = "TestGroup" 

$parent = [ADSI]"WinNT://$computer/$groupToAddTo,group" 
$parent.Add($user.Path) 

Des indices sur la façon de répondre à cette utilisateur utilisant ADSI? Ou, d'autres moyens brillants pour réaliser ce que je veux en utilisant Powershell ou d'autres outils de ligne de commande? L'interface graphique fonctionne bien, cependant, l'automatisation est la clé ici.

+3

Ce n'est pas powershell, mais ce qui suit fonctionne à partir d'une ligne de commande: net localgroup "Performance Monitor Utilisateurs" "IIS AppPool \ ASP.NET v4.0"/ADD' – Artomegus

+0

Bien sûr! Merci beaucoup. Je le savais, pourquoi n'y ai-je pas pensé? J'aimerais toujours savoir comment le faire avec ADSI pur, mais cela a résolu mon problème actuel en ce moment. –

+1

Malheureusement, "net localgroup" ne fonctionne que si le nom du pool d'applications est de 20 caractères ou moins. Je suppose que c'est parce que la longueur maximale d'un nom d'utilisateur régulier est de 20 caractères. Si le nom du pool est plus long, il affichera les instructions d'utilisation et ne fera rien. Si vous essayez de ne fournir que les 20 premiers caractères du nom du pool, l'utilisateur ou le groupe n'existe pas. –

Répondre

12

Le script PowerShell suivant ajoutera le pool d'applications « ASP.NET v4.0 » au groupe « Les utilisateurs de l'Analyseur de performances »

$group = [ADSI]"WinNT://$Env:ComputerName/Performance Monitor Users,group" 
$ntAccount = New-Object System.Security.Principal.NTAccount("IIS APPPOOL\ASP.NET v4.0") 
$strSID = $ntAccount.Translate([System.Security.Principal.SecurityIdentifier]) 
$user = [ADSI]"WinNT://$strSID" 
$group.Add($user.Path) 

Contrairement à la commande net localgroup, ce script fonctionnera bien avec les noms de pool d'applications plus de 20 caractères.

+2

Ceci devrait être accepté comme réponse. – JamesQMurphy

+0

@ErikABrandstadmoen Pourriez-vous s'il vous plaît accepter ceci comme réponse? Merci. –

Questions connexes