9

ASP.NET アプリケーションからカスタム パフォーマンス カウンターを使用できるように、ユーザーIIS AppPool\ASP.NET v4.0Performance Monitor Usersグループに追加する行為を PowerShell でスクリプト化しようとしています。しかし、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 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 やその他のコマンドライン ツールを使用して、私が望むものを達成するための他の優れた方法はありますか? GUI は問題なく動作しますが、ここでは自動化が重要です。

4

1 に答える 1

13

次の PowerShell スクリプトは、アプリケーション プール "ASP.NET v4.0" をグループ "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)

コマンドとは異なりnet localgroup、このスクリプトは 20 文字を超えるアプリ プール名でも問題なく動作します。

于 2014-08-13T06:22:07.947 に答える