如何使用 Get-ADUser 在 Powershell 中设置变量的值?

How do I set the value of a variable in Powershell using Get-ADUser?

我正在尝试使用我们面向客户的系统之一生成的 csv 文件中的信息来更新 Active Directory。我将信息(ID#)存储在 facsimileTelephoneNumber AD 属性中(不要问为什么)。这就是它变得棘手的地方。如果该属性中已经有一个值不同于存储在 csv 文件中的值,我不想更改它。我将 csv 文件中的值设置为变量 $ID,并尝试将 AD 中的值设置为变量 $CurrentID。从那里开始,我正在比较两者以查看它们是否相等。从 csv 导入 $ID 工作正常,没问题。但是使用 Get-ADuser 设置 $CurrentID 并没有达到我的预期。

$CurrentID = Get-ADUser -Identity $Username -Properties facsimileTelephoneNumber

是我用来尝试设置的。但是当我比较两个变量时使用:

if ($CurrentID -eq $ID) {Execute this code}

它总是测试错误,所以什么也没有发生。当我调用变量以查看其中的内容时,我从 $ID 获得了正确的数据,但是 $Current ID,我使用 Get-ADUser 提取的那个,returns 一整块属性,DistinguishedName,Enabled,facsimileTelephoneNumber (这是我想要的)、GivenName、Name、ObjectClass、ObjectGUID、SAMAccountName、SID、Surname 和 UserPrincipalName。我认为这就是 equal 测试失败的原因,但我不知道如何解决。我是 Powershell 脚本的新手,所以请多关照。

but $Current ID, the one I pull using Get-ADUser, returns a whole block of attributes

这很正常。 Get-ADUser returns an object 具有所有属性。要只比较 属性,请使用 $CurrentID.whatever。例如:

if ($CurrentID.facsimileTelephoneNumber -eq $ID) {Execute this code}

如果 $ID 也是一个具有属性的对象,那么您可能需要为此做同样的事情:

if ($CurrentID.facsimileTelephoneNumber -eq $ID.facsimileTelephoneNumber) {Execute this code}

但如果不知道变量 $ID 是什么类型,我不能肯定地告诉你。