【发布时间】:2018-10-22 11:10:59
【问题描述】:
我有两个 .csv 文件,我需要比较它们。 第一个是 Active Directory 的摘录,另一个是注册表配置文件列表的摘录。
当我比较它们时,我只想显示配置文件列表中存在的用户,在 Active Directory 中禁用并添加一个过滤器以仅显示域中的用户(“域\用户名”)。
compare-object -referenceobject $(get-content C:\Temp\UsersAD.csv) -differenceobject $(get-content C:\Temp\ProfileList.csv) | ?{$_.SideIndicator -eq '=>'}
这是我从这个脚本中得到的:
PS C:\Users\Administrator.DOMAIN> C:\Users\Administrator.DOMAIN\Downloads\compare_users.ps1
InputObject SideIndicator
----------- -------------
#TYPE Selected.System.Management.Automation.PSCustomObject =>
"PSChildName" =>
"NT AUTHORITY\SYSTEM" =>
"NT AUTHORITY\LOCAL SERVICE" =>
"NT AUTHORITY\NETWORK SERVICE" =>
"LocalName\Administrator" =>
"NT SERVICE\MSSQL$MICROSOFT##WID" =>
"IIS APPPOOL\.NET v4.5" =>
"IIS APPPOOL\.NET v4.5 Classic" =>
理想情况下应该是这样的:
PSChildName
"DOMAIN\Username1"
"DOMAIN\Username2"
我尝试在最后添加一个过滤器,但没有结果,因为它不是有效的命令:
compare-object -referenceobject $(get-content C:\Temp\UsersAD.csv) -differenceobject $(get-content C:\Temp\ProfileList.csv) -Filter "DOMAIN\" | ?{$_.SideIndicator -eq '=>'}
这是注册表配置文件列表最初的样子:
#TYPE Selected.System.Management.Automation.PSCustomObject
PSChildName
NT AUTHORITY\SYSTEM
NT AUTHORITY\LOCAL SERVICE
NT AUTHORITY\NETWORK SERVICE
LoacalName\Administrator
DOMAIN\Username
DOMAIN\Administrator
NT SERVICE\MSSQL$MICROSOFT##WID
IIS APPPOOL\.NET v4.5
IIS APPPOOL\.NET v4.5 Classic
所以实际上我需要与使用 Compare-Object 命令得到的相反(即“DOMAIN\Username”和“DOMAIN\Administrator”)。
已启用 Active Directory 用户的代码:
Get-ADUser -Filter 'enabled -eq $true' |
Select-Object SamAccountName,@{Name='FullUserName';Expression={"DOMAIN\$($_.SamAccountName)"}} |
Export-CSV C:\Temp\UsersEnabled.csv -Encoding UTF8
结果:
#TYPE Selected.Microsoft.ActiveDirectory.Management.ADUser
FullUserName
DOMAIN\Administrator
DOMAIN\User1
DOMAIN\User2
【问题讨论】:
-
请更新您的问题,以使用示例输入和预期输出(最好是MCVE (Minimal, Complete, and Verifiable Example)
-
",在 Active Directory 中禁用..." 我在您的数据或代码中看不到任何指示用户/配置文件是启用还是禁用的内容。你能澄清一下吗?您能否还包括来自 Active Directory 的 CSV 文件的模型(摘录)?
-
@PetruZaharia 我有两个 .csv 文件。一个显示活动目录中启用的用户,另一个显示本地配置文件列表。因此,如果我比较它们,它将显示用户是否具有本地配置文件但在活动目录中被禁用(我在帖子中添加了启用用户的代码)。
标签: powershell csv active-directory