2013-08-13 10 views
9

Ich versuche Skript mit Powershell den Vorgang des Hinzufügen des Benutzers IIS AppPool \ ASP.NET v4.0 zum Performance Monitor Benutzer Gruppe , um benutzerdefinierte Leistungsindikatoren aus einer ASP.NET-Anwendung zu verwenden. Aber ich kann nicht herausfinden, wie Sie den automatisch erstellten ASP.NET-Benutzer mit ADSI ansprechen.lokalen Fenster Gruppe

Dies funktioniert für mich:

$computer = $env:COMPUTERNAME; 

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

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

Allerdings kann ich nicht herausfinden, wie die ASP.NET v4.0 Benutzer zu finden:

$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) 

Irgendwelche Hinweise auf, wie das adressieren Benutzer mit ADSI? Oder andere brillante Methoden, um mit PowerShell oder anderen Befehlszeilenwerkzeugen das zu erreichen, was ich möchte? GUI funktioniert gut, aber Automatisierung ist der Schlüssel hier.

+3

Es ist nicht Powershell, aber die folgenden Werke von einer Befehlszeile: 'net localgroup "Performance Monitor Users" "IIS AppPool \ ASP.NET v4.0"/ ADD' – Artomegus

+0

Natürlich! Danke vielmals. Ich wusste das, warum habe ich nicht daran gedacht? Ich würde immer noch gerne wissen, wie man es mit reinem ADSI macht, aber das hat mein momentanes Problem gelöst. –

+1

„net localgroup“ funktioniert nur, wenn der App-Pool-Name 20 Zeichen oder weniger Leider. Ich nehme an, das liegt daran, dass die maximale Länge eines regulären Benutzernamens 20 Zeichen beträgt. Wenn der Pool-Name länger ist, zeigt er Benutzungsanweisungen an und tut nichts. Wenn Sie versuchen, nur die ersten 20 Zeichen der Pool-Namen zur Verfügung stellen, wird es tel Sie den Benutzer oder die Gruppe nicht existiert. –

Antwort

12

Der folgende Powershell-Skript wird den Anwendungspool „ASP.NET v4.0“ die Gruppe „Systemmonitorbenutzer“

$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) 

Im Gegensatz zum net localgroup Befehl hinzufügen, wird dieses Skript mit AppPool Namen funktionieren länger als 20 Zeichen.

+2

Dies sollte als Antwort akzeptiert werden. – JamesQMurphy

+0

@ErikABrandstadmoen Könnten Sie bitte diese als Antwort akzeptieren? Vielen Dank. –