powershell - Powershell - 无法将变量传递给命令行开关
问题描述
当我持有一个变量并将其传递给命令行开关时,我得到的结果不一致。也许我只是在powershell中错误地使用变量?如果有办法准确查看我的 Visual Studio Code 在运行时发送的代码行,那将会很有帮助。
我的代码在执行前两个过滤器时返回一个 $null 对象。我已经确认 $username 实际上确实包含字符串“userLoginName”,但它似乎没有正确传递给 Get-ADUser 命令行开关。
PS C:\> $username = "userLoginName"
PS C:\> Get-ADUser -Filter {SAMAccountName -eq "$($username)"}
PS C:\> Get-ADUser -Filter {SAMAccountName -eq "$username"}
PS C:\> Get-ADUser -Filter {SAMAccountName -eq "userLoginName"}
为什么只有第三个 -filter 命令运行成功?前两个返回 $null,而不是 UserNotFound 类型的异常或任何东西。我在这里做错了什么?我只是不知道如何在 powershell 中使用变量(是的)?很抱歉成为菜鸟,但感谢您抽出宝贵的时间。
解决方案
看到这个帖子。出于某种原因,AD 调用的-Filter
参数不喜欢将字符串变量作为 ScriptBlock 的一部分(您可以阅读该帖子以获取更多信息)。-Filter
但是作为字符串传递应该可以。
Get-ADUser -Filter "SAMAccountName -eq '$username'"
或者,如果您只想使用 SAMAccountName 查找 AD 用户,您可以执行Get-ADUser -Identity $username
. 这可能更容易。使用该-Filter
参数的好处(或有时后果)是,就像您发现的那样,如果找不到用户,它不会引发异常。如果您使用该-Identity
参数,如果找不到用户,它将引发异常。
推荐阅读
- powerbi - 共享 Power BI 仪表板 - 外部用户
- arrays - 合并排序应用程序中的无效结果
- mirth - 如何在 Mirth 中将转换器编辑为 javascript 脚本(而不是作为单独的步骤)?
- webpack - Babel 不使用 NPM / Webpack 填充?
- python - 如何创建预期列表?
- php - 问题是它在某些用户中返回 0.0.0.0,而不是用户的真实 ip
- python - 如何根据列对嵌套列表进行排序?
- swift - Cocoapods v. 1.10.0 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES 错误 Xcode 版本 12.0.1
- excel - 使用 Excel VBA 在数据库中填写分月付款
- python - Pandas 数据框合并返回 NaN 值