그룹

2013-08-13 3 views
9

내가 PowerShell을 스크립트에 사용자를 추가하는 행위를 시도하고 IIS AppPool을 \ ASP.NET 성능 모니터 사용자 그룹에 4.0 ASP.NET 응용 프로그램에서 사용자 지정 성능 카운터를 사용할 수 있습니다. 그러나 ADSI를 사용하여 자동으로 생성 된 ASP.NET 사용자를 처리하는 방법을 알 수 없습니다. 그룹

나를 위해 작동합니다

$computer = $env:COMPUTERNAME; 

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

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

을하지만, 나는 ASP.NET 4.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이나 다른 명령 줄 도구를 사용하여 원하는 것을 얻을 수있는 다른 훌륭한 방법은 없을까요? GUI는 잘 작동하지만 여기서는 자동화가 핵심입니다.

+3

이것은 powershell이 ​​아니지만 명령 줄에서 다음과 같이 작동합니다. 'net localgroup "성능 모니터 사용자" "IIS AppPool \ ASP.NET v4.0/ADD' – Artomegus

+0

물론! 고마워. 나는 이것을 알고 있었다, 왜 나는 그것을 생각하지 않았는가? 나는 여전히 순수한 ADSI로 그것을하는 방법을 알고 싶다. 그러나 이것은 지금 나의 현재의 문제를 해결했다. –

+1

불행히도 "net localgroup"은 응용 프로그램 풀 이름이 20 자 이하인 경우에만 작동합니다. 정규 사용자 이름의 최대 길이는 20 자이기 때문에 이것이라고 가정합니다. 풀 이름이 이보다 길면 사용법이 표시되고 아무 것도하지 않습니다. 풀 이름의 처음 20 자만 입력하면 사용자 나 그룹이 존재하지 않습니다. –

답변

12

"성능 모니터 사용자"는 net localgroup 명령과는 달리

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

그룹에 응용 프로그램 풀 "ASP.NET 버전 4.0"를 추가합니다 다음 PowerShell 스크립트는이 스크립트는 응용 프로그램 풀 이름이 잘 작동합니다 20 자 이상.

+2

답변으로 받아 들여야합니다. – JamesQMurphy

+0

@ErikABrandstadmadmoen 답변으로 받아 들일 수 있습니까? 감사. –