首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较两个数组的DistinguishedName并获取所有数据

比较两个数组的DistinguishedName并获取所有数据
EN

Stack Overflow用户
提问于 2017-11-15 13:50:02
回答 1查看 225关注 0票数 0

我必须编写一个脚本来获得所有的EoL Windows机器。但我得为一些例外做个白名单。

首先,我得到了所有的旧电脑:

代码语言:javascript
复制
$getad = Get-ADComputer -Filter {
    (operatingsystem -like "*Windows 10*" -and OperatingSystemVersion -notlike "*16299*" -and OperatingSystemVersion -notlike "*14393*" -and OperatingSystemVersion -notlike "*15063*"`) `
    -or (operatingsystem -like "*Windows Vista*") `
    -or (operatingsystem -like "*Windows XP*") `
    -or (operatingsystem -like "*95*") `
    -or (operatingsystem -like "*94*") `
    -or ( operatingsystem -like "*Windows 8*" -and OperatingSystemVersion -notlike "*9600*") `
    -or (operatingsystem -like "*2000 Professional*") `
    -or (operatingsystem -like "*2000 Server*") `
    -or (operatingsystem -like "*2003*") `
    -or (operatingsystem -like "*Windows NT*") `
    -or ( operatingsystem -like "*Windows 7*" -and OperatingSystemVersion -notlike "*7601*")
} `
-Properties ('Name', 'operatingsystem', 'DistinguishedName', 'description', 'lastlogondate', 'OperatingsystemVersion', 'Created', 'Enabled', 'SamAccountName')
        
$selectobj = $getad | Select-Object Name, Operatingsystem, DistinguishedName, Description, Lastlogondate, OperatingSystemVersion, Created, Enabled, SamAccountName

然后我将白名单加载到一个变量中:

代码语言:javascript
复制
  $whitelisted = Get-Content "C:\Users\example\Desktop\whitelistedpcs.txt"

然后,我首先清空一个变量(可以肯定),然后比较我得到的计算机和我的白名单。

代码语言:javascript
复制
$AlertoldComputers = $null

$alertcompdist = Compare-Object -ReferenceObject $selectobj.DistinguishedName -DifferenceObject $whitelisted

现在,我的结果是列出了所有不在白名单上的计算机,但我刚刚得到了杰出的名称。我需要所有的信息:

名称,操作系统,DistinguishedName,描述,Lastlogondate,OperatingSystemVersion,已创建,启用,SamAccountName

我尝试过用foreach来完成这个任务,但是却没有得到任何输出:

代码语言:javascript
复制
foreach ($alertcomputer in $alertcompdist) {
    $AlertoldComputers += Get-ADComputer -Filter {(DistinguishedName -like "*$alertcomputer*")} -Properties ('Name', 'operatingsystem', 'DistinguishedName', 'description', 'lastlogondate', 'OperatingsystemVersion', 'Created', 'Enabled', 'SamAccountName') | Select-Object Name, Operatingsystem, DistinguishedName, Description, Lastlogondate, OperatingSystemVersion, Created, Enabled, SamAccountName
}

输出应该如下所示:

名称: Examplename 操作系统: Windows 10企业 DistinguishedName : CN=Examplename,OU=Bla,OU=Da,OU=computers,OU=dadada,OU=gugu,DC=tra,DC=la,DC=la 描述:这只是一个例子。 最后期限: 01.01.1000 OperatingSystemVersion : 10.0 (10586) 创建: 01.01.1000 启用:真 SamAccountName :示例

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-15 14:10:02

你能试试这个吗?

其目的是显示计算机的AD信息,并使用if ($whitelisted -match $_.DistinguishedName)检查是否在已白名单的主机名列表中找到一个值:

代码语言:javascript
复制
$getad = Get-ADComputer -Filter {(operatingsystem -like "*Windows 10*" -and OperatingSystemVersion -notlike "*16299*" -and OperatingSystemVersion -notlike "*14393*" -and OperatingSystemVersion -notlike "*15063*") -or (operatingsystem -like "*Windows Vista*") -or (operatingsystem -like "*Windows XP*") -or  (operatingsystem -like "*95*") -or (operatingsystem -like "*94*") -or ( operatingsystem -like "*Windows 8*" -and OperatingSystemVersion -notlike "*9600*") -or (operatingsystem -like "*2000 Professional*") -or (operatingsystem -like "*2000 Server*") -or (operatingsystem -like "*2003*") -or (operatingsystem -like "*Windows NT*") -or ( operatingsystem -like "*Windows 7*" -and OperatingSystemVersion -notlike "*7601*")} -Properties ('Name', 'operatingsystem', 'DistinguishedName', 'description', 'lastlogondate', 'OperatingsystemVersion', 'Created', 'Enabled', 'SamAccountName')

$whitelisted = Get-Content "C:\Users\example\Desktop\whitelistedpcs.txt"

$getad | Select-Object Name, Operatingsystem, DistinguishedName, Description, Lastlogondate, OperatingSystemVersion, Created, Enabled, SamAccountName | ForEach-Object {
    if ($whitelisted -match $_.DistinguishedName) {
        Write-Host "$($_.DistinguishedName) is whitelisted"
    }
    else{
        Write-Host "$($_.DistinguishedName) is not whitelisted" -ForegroundColor Yellow
        $_
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47309155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档