首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Active Directory组成员- Powershell

Active Directory组成员- Powershell
EN

Stack Overflow用户
提问于 2013-12-16 20:28:49
回答 1查看 409关注 0票数 0

我对Powershell中的脚本编程是相当陌生的,并且曾经面对过这个任务。显示标识特定OU中的服务器的表,并确保它们是正确组的成员。脚本中也不应该有任何“硬编码”(即服务器名称或组名称)。基本上,该脚本应该评估服务器的名称,并确定它应该是哪个组的成员。如果它在正确的组中,则将其打印到显示正确的表中,如果不正确,则也将其打印到表中,指示它在错误的组中。

我开始使用Quest ActiveRoles插件,并确定我需要使用嵌套循环。我将首先遍历安全组,并根据该组评估每个服务器,看看它是否是成员。然后,我将计算机和组添加到自定义PSObject中,并能够将其打印出来作为正确答案。这部分工作得很好。当我试图打印出不正确的答案时,我会遇到问题。由于我构造循环的方式,大多数服务器将不在所选的组中,因此它们都将返回为不正确。

我的问题是,通过循环这些信息并将服务器名称与组成员身份进行比较,并且仍然能够显示哪些属于正确的组,哪些属于不正确的组,最好的方法是什么?我的代码如下。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#Load Quest Active Roles Snapin
Add-PSSnapin quest.activeroles.admanagement

#Load Active Directory module
Import-Module ActiveDirectory

#Variables
$AccelGroup = Get-QADGroup -SearchRoot 'lumosnet.com/Centrify/Role Groups' -GroupType     'Security' | where {$_.name -like "* Servers"}
$AccelComputer = Get-QADComputer -SearchRoot 'lumosnet.com/Centrify/servers'
$report = @()

$AccelGroup | foreach{$ADN=$_.DN
    $AccelComputer | foreach{$AMember=$_.memberof
        $AComp=$_.name

        If($AMember -like $ADN)
        {
            $ReportObj = New-Object PSObject
            $ReportObj | Add-Member -MemberType NoteProperty -Name Computer_Name -Value     $AComp                        
            $ReportObj | Add-Member -MemberType NoteProperty -Name Group_Name -Value     $($AMember -replace '^CN=([^,]+),OU=.+$','$1')
            $ReportObj | Add-Member -MemberType NoteProperty -Name Correct? -Value "Correct"
            $report += $ReportObj
        }
        Else
        {

        }
    }    
}

write-host ($report | FT -Autosize | Out-String)
EN

回答 1

Stack Overflow用户

发布于 2013-12-16 21:00:38

与其自己尝试连接,不如考虑使用LDAP查询来检索组中的服务器,然后再使用另一个查询来检索组之外的服务器。它可能仍然会变得更简单:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ouPath = "LDAP://OU=Database,OU=Domain Servers,DC=EXAMPLE,DC=LOCAL"
$groupPath = "CN=ITT Testing Servers,OU=Domain Servers,DC=EXAMPLE,DC=LOCAL"

$correctFilter = ("(&(objectClass=computer)(memberof={0}))" -f $groupPath)
$incorrectFilter = ("(&(objectClass=computer)(!(memberof={0})))" -f $groupPath)

# set up the searcher
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $ouPath 
$objSearcher.PageSize = 1000
$objSearcher.SearchScope = "Subtree"
@("name","operatingSystem","lastLogonTimestamp") | %{ $unused = $objSearcher.PropertiesToLoad.Add($_) }

# retrieve the correct items
$objSearcher.Filter = $correctFilter 

Write-Host "Servers correctly in group"
$goodItems = $objSearcher.FindAll()
$goodItems | %{ New-Object PSObject -Property $_.Properties } | ft name,operatingsystem,lastLogonTimestamp

# retrieve the bad items
$objSearcher.Filter = $incorrectFilter 

Write-Host "Servers in wrong group"
$badItems = $objSearcher.FindAll()
$badItems | %{ New-Object PSObject -Property $_.Properties } | ft name,operatingsystem,lastLogonTimestamp

当然,您可以遍历每个结果以将它们添加到一个列表中,就像您当前所做的那样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20620261

复制
相关文章
函数指针,使用qsort,进行结构体排序
我们创建了一个学生信息结构,结构成员包括名字,学号和成绩。main函数中创建了一个包含三个学生信息的数组,并使用qsort函数对数组按照学生成绩进行排序。qsort函数第四个参数是函数指针,因此我们需要传入一个函数指针,并且这个函数指针的入参是cont void *类型,返回值为int。我们通过前面的学习知道了函数名本身就是指针,因此只需要将我们自己实现的studentCompare作为参数传入即可。
用户4645519
2020/09/08
1.7K0
C语言 | 指向指针的指针排序
这道理放在C语言学习上也一并受用。在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的是日积月累的学习。
小林C语言
2021/03/10
1.8K0
C++指向数组元素的指针
在C++中,一个变量有地址,一个数组包含若干元素,每个数组元素都在内存中占用存储单元,它们都有相应的地址;指针变量既然可以指向变量,也可以指向数组元素,所谓数组元素的指针就是数组元素的地址。
小林C语言
2020/12/15
2.2K0
C++指向数组元素的指针
指针数组与指向指针的指针
指针数组与指向指针的指针 http://wlkc.gdqy.edu.cn/jpkc/portal/blob?key=173314 指针数组和数组指针的区别 http://allew.blog.163.
阳光岛主
2019/02/19
1.9K0
C语言 | 用指向指针的指针对n个整数排序
例82:C语言用指向指针的指针的方法对n个整数排序并输出;要求将排序单独写成一个函数;n个整数在主函数中输入,最后在主函数中输出。
小林C语言
2021/02/12
1.5K0
C语言 | 用指向指针的指针对n个整数排序
C语言 | 指向指针的指针
这道理放在C语言学习上也一并受用。在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的是日积月累的学习。
小林C语言
2021/03/10
3K0
使用 Python 对波形中的数组进行排序
假设我们采用了一个未排序的输入数组。我们现在将对波形中的输入数组进行排序。数组 'arr[0..n-1]' 以波形排序,如果 arr[0] >= arr[1] <= arr[2] >= arr[3] <= arr[4] >= .....
很酷的站长
2023/02/22
6.9K0
使用 Python 对波形中的数组进行排序
c语言之指向指针的指针
定义:int **p; 实例: #include<stdio.h> #include<iostream> int main() { char* str[] = { "hello","hi","nihao" }; char** p; for (int i = 0; i < 3; i++) { //指针指向数组中的第几个指针 p = str + i; //想要获得指针指向的值,通过*来解引用 printf("%s\n", *p
西西嘛呦
2020/08/26
1.5K0
C++ 中关于指向数组的指针与指针数组的一些思考
在 C++ 中,可以将一个指针指向某个数组,也可以使用一个指针数组指向一个数组。这二种方式的具体使用请看以下代码:
耕耘实录
2022/05/09
1.4K0
c++常量指针和指针常量_指针指向二维数组
a)常量定义:不可修改的值,例如250,’A’ b)const关键字功能:将变量常量化,四种形式
全栈程序员站长
2022/09/27
7450
c++常量指针和指针常量_指针指向二维数组
使用asort函数对PHP数组进行升序排序
PHP是一门功能强大的语言,数组是PHP中十分常用的数据结构之一。在实际开发中,经常需要对数组进行排序。PHP提供了多个函数用于对数组进行排序,其中asort函数可以实现对数组进行升序排序。
很酷的站长
2023/08/25
4960
使用asort函数对PHP数组进行升序排序
c语言之使用指针将数组进行反转
#include<stdio.h> #include<iostream> void reverse(int* a, int length) { int* p, temp, * i, * j, m; m = (length - 1) / 2;//取得中间的下标 i = a;//i指向数组的首元素 j = a + length - 1;//j指向数组的尾元素 p = a + m;//p指向数组中间的元素 for(; i < p; i++,j--) {//
西西嘛呦
2020/08/26
1.8K0
c语言之使用指针将数组进行反转
C语言实例:利用指向指针的指针实现字符串排序
实例代码 // // Created by 冲哥 on 2021/12/20. // #include<stdio.h> #include<string.h> int main() { char *str[]={"CAR","AND","FOR","ERR","DOG","BOX"},**p,*temp; int n=sizeof(str)/sizeof(str[0]),i,j,k;//计算长度 p=str; for(i=0;i<n-1;i++)//按从小到大排序,选择排
C语言中文社区
2022/05/30
7960
C语言实例:利用指向指针的指针实现字符串排序
使用指向函数的指针
/**输入2个整数,然后让用户选择1或2,选1时调用max函数,输出2者中的大数, 选2时调用min函数,输出2者中的小数**/ #include <stdio.h> #include <stdlib.h> int main() { int max(int x,int y); int min(int x,int y); int (*p)(int ,int ); int n,a,b; scanf("%d%d",&a,&b); scanf("%d",&n);
谙忆
2021/01/19
8080
【C 语言】数组 ( 数组指针 | 数组指针定义 | 使用 数组指针类型 定义数组指针 )
最后 , 声明一个 数组指针类型 变量 , 将 array2 变量地址赋值给该 数组指针类型 变量 , 指针指向的数据类型为 int[3] 数组类型的变量 array2 ;
韩曙亮
2023/03/29
3K0
【C 语言】数组 ( 数组指针 | 数组指针定义 | 使用 数组指针类型 定义数组指针 )
【C】指针进阶
这里需要注意,常量字符串“abcdef”时存放在只读数据区中的,可以读取,但不能更改,所以我们使用const来修饰,防止通过p修改字符串 const char ps = “abcdef”;//这里的ps指向的是字符串的首字符 要想修改字符串中的内容需要用到数组:
阿伟@t
2023/10/10
2000
【C】指针进阶
C++指向函数的指针
函数指针是指向函数而非指向对象的指针。与其他类型的指针一样,函数指针也指向某个特定的类型。函数类型由其返回类型以及形参表确定,而与函数名无关。(类似C#中的代理)
卡尔曼和玻尔兹曼谁曼
2019/01/25
1.5K0
【C指针进阶】(C精髓)——对指针的更进一步深入剖析(图文近2w详解)
本文承接了上文:初阶指针——全面了解指针,在此基础上对指针进行更深一步的剖析,相信我,也请相信你自己!
诺诺的包包
2023/02/17
5820
【C指针进阶】(C精髓)——对指针的更进一步深入剖析(图文近2w详解)
【C 语言】数组 ( 数组指针 | 数组指针定义 | 使用 数组类型* 定义数组指针 )
最后 , 声明一个指针 , 将 array2 变量地址赋值给该指针 , 指针指向的数据类型为 int[3] 数组类型的变量 array2 ;
韩曙亮
2023/03/29
3.4K0
【C 语言】数组 ( 数组指针 | 数组指针定义 | 使用 数组类型* 定义数组指针 )
C语言进阶-回调函数
目录 前言 回调函数 回调型计算器 回调冒泡排序(模拟qsort库函数) qsort函数原型 compar参数 代码演示  冒泡排序(bubble_sort) ---- 前言 ---- 本文主要讲解 回调函数的理解 回调实现计算器 qsort各种功能的使用 冒泡排序各种功能的实现 回调函数 ---- 定义 回调函数就是一个通过函数指针调用的函数 如果你把函数的指针(地址)作为参数传递给另一 个函数, 当这个指针被用来调用其所指向的函数时,我们就说这是回调函数 回调函数不是由该函数的实现
用户9645905
2022/11/30
9530
C语言进阶-回调函数

相似问题

用qsort或备用交换方法对指向struct对象的指针数组进行排序的C语言排序算法

23

对指向结构的指针数组进行排序的stdlib qsort

12

使用qsort对结构指针数组进行排序

32

对指向Objective-C对象的指针数组进行qsort

21

struct -使用qsort对c字符串进行排序

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文