【发布时间】:2013-08-13 12:18:24
【问题描述】:
我正在尝试使用 PowerShell 编写脚本,将用户 IIS AppPool\ASP.NET v4.0 添加到 Performance Monitor Users 组,以便能够使用来自 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 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 工作正常,但自动化是这里的关键。
【问题讨论】:
-
它不是 powershell,但可以从命令行执行以下操作:
net localgroup "Performance Monitor Users" "IIS AppPool\ASP.NET v4.0" /ADD -
当然!非常感谢。我知道这一点,为什么我没有想到呢?我仍然很想知道如何使用纯 ADSI 来做到这一点,但这解决了我目前的问题。
-
不幸的是,“net localgroup”仅适用于应用程序池名称为 20 个字符或更少的情况。我认为这是因为常规用户名的最大长度为 20 个字符。如果池名称长于该名称,它将显示使用说明并且什么也不做。如果您尝试只提供池名称的前 20 个字符,它将告诉您用户或组不存在。
标签: windows powershell adsi