Добавьте 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 символов.