powershell - 在 Get-AdUser 中使用哈希表变量

标签 powershell

考虑以下代码片段

$User = @{Username = "fred.bloggs"}
$Username = $User.Username
Get-AdUser -Filter {SamAccountName -eq $Username}               # this works
Get-AdUser -Filter {SamAccountName -eq $User.Username}          # this throws an error

第一个 Get-User 有效,但第二个失败:

Get-AdUser : Property: 'Username' not found in object of type: 'System.Collections.Hashtable'.

我知道 PowerShell 对对象和从左到右解析的解析怪癖,通常会将其包装在 $($User.Username) 中,但这也不起作用。

我知道答案很简单!

最佳答案

由于 -Filter 正在寻找 System.String,因此您可以通过使用双引号而不是脚本 block 来解决解析问题:

Get-ADUser -Filter "SamAccountName -eq '$($User.Username)'"

Get-ADUser 会将传递给 -Filter 的任何脚本 block 转换为字符串以进行评估,因此首先使用字符串会很有帮助。

关于powershell - 在 Get-AdUser 中使用哈希表变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26468002/

相关文章:

windows - 防止以纯文本形式获取 IIS 物理路径凭据(使用 powershell)

function - 无法使用powershell函数在数组中添加元素

powershell - 当我在 powershell 中只有 URL 时如何获取 SPItem 对象

powershell - 替换文件夹及其子文件夹中所有文件的文件名中的某些字符

regex - powershell中将字符串解析成hash最简洁的方法

c# - 无法加载文件或程序集...但一开始没有?

rest - 预验证对 Team City 8.0 REST API 的 Powershell WebClient 请求

powershell - 创建打印机 Powershell

windows - powershell 非对称加密/解密函数

powershell - 使用 PowerShell 从主机名解析 IP 地址