Добавьте IIS AppPool\ASP.NET v4.0 в локальную группу Windows.

Я пытаюсь с помощью PowerShell создать сценарий добавления пользователя IIS AppPool\ASP.NET v4.0 в группу " Пользователи системного монитора ", чтобы иметь возможность использовать пользовательские счетчики производительности из приложения ASP.NET. Но я не могу понять, как обратиться к автоматически созданному пользователю ASP.NET с помощью ADSI.

Это работает для меня:

 $computer = $env:COMPUTERNAME;

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

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

Однако я не могу понять, как найти пользователя 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)

Любые подсказки о том, как обратиться к этому пользователю с помощью ADSI? Или какие-нибудь другие блестящие способы добиться того, чего я хочу, используя Powershell или другие инструменты командной строки? Графический интерфейс работает нормально, однако автоматизация является ключевым моментом здесь.

1 ответ

Следующий скрипт PowerShell добавит пул приложений "ASP.NET v4.0" в группу "Пользователи системного монитора"

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

в отличие от net localgroup Команда, этот скрипт будет хорошо работать с именами пулов приложений длиной более 20 символов.

Другие вопросы по тегам