AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 828062
Accepted
Fairy
Fairy
Asked: 2017-01-24 08:40:21 +0800 CST2017-01-24 08:40:21 +0800 CST 2017-01-24 08:40:21 +0800 CST

基于“由”Active Directory 属性管理的机器动态分组

  • 772

公司政策要求为每台服务器分配一名管理员。此信息保存在计算机对象的“管理者”字段中。

在通过此 AD 字段填充的 SCOM 中创建一个动态组将非常有用。这就是我的问题。

我已经尝试过的步骤。

1.为 Windows-Computer 目标创建一个属性“Managed by”。此属性是由SELECT * FROM DS_computer具有属性的 WMI 查询DS_managedBy。

2.使用动态过滤器创建一个组。(Object is Windows-Computer_Extended AND (Managed by Equals usr) AND True)

现在这在理论上似乎是合理的,但显然根本不起作用。

这实际上可能是我想要创造的吗?我如何解决这个问题?

active-directory scom
  • 1 1 个回答
  • 681 Views

1 个回答

  • Voted
  1. Best Answer
    Fairy
    2017-01-31T07:00:26+08:002017-01-31T07:00:26+08:00

    经过一番研究,我发现有人已经解决了这个问题。有点。我修改了这个脚本。摆脱了最后几行,并在下面添加了我需要的逻辑。它很乱,但它就像一个魅力。您需要更改的只是管理服务器和包含正则表达式(我们有多个域,但只希望对一个域进行这种自动化)。

    <Functions from original script go here>
    
    $ManagementServer = "<ManagementServerGoesHere>"
    
    $ManagementGroup = GetSCOMManagementGroup -ms $ManagementServer
    $Groups = Get-SCOMGroup -DisplayName "Managed-By *"
    $Groups |% {
        $Group = $_
        $Group.DisplayName -match "Managed-By (\w{3})" | Out-Null
        $sAMAccountName = $Matches[1]
        $User = Get-ADUser -Filter {sAMAccountName -eq $sAMAccountName}
        $UserDN = $User.DistinguishedName
        $ADManagedByComputers = Get-ADComputer -Filter {ManagedBy -eq $UserDN}
        $SCOMManagedByComputer = Get-SCOMGroup $Group.id | Get-SCOMClassInstance
        [string]$InstancesToAdd = ""
        [string]$InstancesToRemove = ""
    
        $ADManagedByComputers | % {
            if($SCOMManagedByComputer.DisplayName -notcontains $_.DNSHostName) {
                $Agent = Get-SCOMAgent -DNSHostName $_.DNSHostName
                if($Agent) {
                    Write-Host ($_.DNSHostName + " not in SCOM Group " + $Group.DisplayName) -ForegroundColor Yellow
                    $InstancesToAdd = $InstancesToAdd + "," + $Agent.Id
                 } else {
                    Write-Host ($_.DNSHostName + " has no Agent installed!") -ForegroundColor Gray
                 }
            } else {
                Write-Host ($_.DNSHostname + " already in SCOM Group " + $Group.DisplayName) -ForegroundColor Green
            }
        }
    
        $SCOMManagedByComputer | % {
            if($_.DisplayName -match "<InclusionRegex>") {
                if($ADManagedByComputers.DNSHostName -notcontains $_.DisplayName) {
                    Write-Host ($_.DisplayName + " should not be in SCOM Group " + $Group.DisplayName) -ForegroundColor DarkYellow
                    $Agent = Get-SCOMAgent -DNSHostName $_.DisplayName
                    if($Agent) {
                        $InstancesToRemove = $InstancesToRemove + "," + $Agent.Id
                    }
                }  
            } else {
                Write-Host ($_.DisplayName + " is not in the domain scope. Skipping.") -ForegroundColor Cyan
            }
        }
    
        $InstancesToAdd = $InstancesToAdd.Trim(",")
        $InstancesToRemove = $InstancesToRemove.Trim(",")
    
    
            $ManagementPackName = ($Group | Get-SCOMClass).ManagementPackName
            $ManagementPackID = (Get-SCManagementPack -Name $ManagementPackName)
            $MP = ValidateGroup -mg $ManagementGroup -mp $MP -groupID $Group.FullName
        If($InstancesToAdd -ne "" -and $InstancesToRemove -ne "") {
            $MP = UpdateGroup -mg $ManagementGroup -mp $ManagementPackID -groupID $Group.FullName -instancesToAdd $InstancesToAdd -instancesToRemove $InstancesToRemove
        }
    
        if($InstancesToAdd -ne "" -and $InstancesToRemove -eq "") {
            $MP = UpdateGroup -mg $ManagementGroup -mp $MP -groupID $Group.FullName -instancesToAdd $InstancesToAdd
        }
    
        if($InstancesToAdd -eq "" -and $InstancesToRemove -ne "") {
            $MP = UpdateGroup -mg $ManagementGroup -mp $MP -groupID $Group.FullName -instancesToRemove $InstancesToRemove
        }
    }
    
    • 2

相关问题

  • 如果以域用户身份远程登录,PC 速度极慢

  • 如何在 Windows 2003 的 ou 级别应用策略

  • 允许用户更改其 Active Directory 密码的 Web 界面

  • MOSS 2007 无法使用 ActiveDirectoryMembershipProvider 配置表单身份验证

  • 通过 VPN 更改 Active Directory 密码

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve