2013-08-13 8 views
9

Próbuję skryptu PowerShell z akt dodanie użytkownika IIS AppPool \ ASP.NET v4.0 do Wyniki grupy Użytkownicy monitora , aby móc używać niestandardowych liczników wydajności z aplikacji ASP.NET. Ale nie mogę dowiedzieć się, jak adresować automatycznie utworzonego użytkownika ASP.NET przy użyciu ADSI.Dodaj IIS AppPool ASP.NET v4.0 do lokalnych okien grupa

Działa to dla mnie:

$computer = $env:COMPUTERNAME; 

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

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

Jednak nie mogę dowiedzieć się, jak znaleźć użytkownika ASP.NET v4.0:

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

żadnych wskazówek na temat sposobu rozwiązania, które użytkownik korzystający z ADSI? Lub inne doskonałe sposoby osiągnięcia tego, czego chcę, używając Powershell lub innych narzędzi wiersza poleceń? GUI działa dobrze, jednak kluczem jest automatyzacja.

+3

Nie jest to program typu "powershell", ale następujące operacje z wiersza polecenia: 'net localgroup" Użytkownicy monitora wydajności "" IIS AppPool \ ASP.NET v4.0 "/ ADD' – Artomegus

+0

Oczywiście! Wielkie dzięki. Wiedziałem o tym, dlaczego o tym nie pomyślałem? Nadal chciałbym wiedzieć, jak to zrobić z czystym ADSI, ale to rozwiązało mój obecny problem już teraz. –

+1

Niestety "net localgroup" działa tylko wtedy, gdy nazwa puli aplikacji ma 20 lub mniej znaków. Zakładam, że dzieje się tak dlatego, że maksymalna długość zwykłej nazwy użytkownika to 20 znaków. Jeśli nazwa puli jest dłuższa, wyświetla instrukcje użycia i nic nie robi. Jeśli spróbujesz podać tylko 20 pierwszych znaków nazwy puli, to zadzwonisz do Ciebie, jeśli użytkownik lub grupa nie istnieje. –

Odpowiedz

12

Poniższy skrypt PowerShell doda puli aplikacji ASP.NET v4.0 „” do grupy „Performance Monitor Users”

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

przeciwieństwie komendy net localgroup, ten skrypt będzie działać dobrze z nazwami puli aplikacji więcej niż 20 znaków.

+2

To powinno zostać zaakceptowane jako odpowiedź. – JamesQMurphy

+0

@ErikABrandstadmoen Czy możesz zaakceptować to jako odpowiedź? Dzięki. –

Powiązane problemy