Powershell 尝试将变量传递到[adsisearcher]时出现问题
如果这是一件简单的事情,我提前表示歉意,但我已经研究了几天,无法独自解决或找到另一条探索的途径 基本上,我有以下功能,可以正常工作并返回我所需的内容:Powershell 尝试将变量传递到[adsisearcher]时出现问题,powershell,active-directory,ldap,dsquery,Powershell,Active Directory,Ldap,Dsquery,如果这是一件简单的事情,我提前表示歉意,但我已经研究了几天,无法独自解决或找到另一条探索的途径 基本上,我有以下功能,可以正常工作并返回我所需的内容: ([adsisearcher]'(&(objectClass=user (samaccountname='*dland*'))').FindOne().Properties['samaccountname'] 返回其中包含dland的用户名。我想用变量($usrNme1)替换dland,但它在表达式或语句中错误为“意外标记'$u
([adsisearcher]'(&(objectClass=user (samaccountname='*dland*'))').FindOne().Properties['samaccountname']
返回其中包含dland的用户名。我想用变量($usrNme1)替换dland,但它在表达式或语句中错误为“意外标记'$usrNme1'))”
通过使用ActiveDirectory模块,我可以通过以下方式使其在本地工作:
Get-ADUser -Filter {SAMAccountName -like $usrNme1} | select-object -Property SAMAccountName
但不幸的是,在这种环境下,我不能用它来对付其他计算机,我必须找到另一种方法,这是我找到替代品的最远距离
这里的任何帮助都将不胜感激:)这是我的最后一块拼图,它令人沮丧的是如此接近而无法理解它!提前感谢您抽出时间:)
编辑:忘记注释了,这个脚本将被推出并在windows 7机器上本地运行,这也是我不能使用Get ADUser的部分原因
谢谢
大卫试试这个:
$foo = '*jsm*'
([adsisearcher]"(&(objectClass=user) (samaccountname=$foo))")
您的查询的格式有点不正确,因为它在
user
之后缺少一个括号,但是您可以像下面的示例一样轻松地将变量放入字符串中。放在双引号内的变量将展开得很好*(大多数情况下。对象参数需要子表达式)
注意:如果您查看,您将看到您正在进行的通配符搜索中出现的问题。如果您有一个大型组织,您可能需要重新考虑使用前导星号和尾随星号或其他复数形式
您可以选择原始查询
除了括号外,它不起作用的原因是因为您使用了单引号。如果你看这个,它会继续说
比较字符串不会出现在引号中。过滤器
显示名称“Philipp Foeckeler”的内容如下:
(displayName=Philipp Foeckeler)
查询应该在没有这些内部引号的情况下运行 嗨,马特,谢谢你,效果很好。我最初使用的查询在用户之后仍然不起作用。是因为我试着用一条线吗?我想让我感到不快的是,它在没有使用dland*变量的情况下工作,但在引入变量后失败了(最初的错误是“无法索引到空数组中”只是想理解这里的区别,这样我就不会再被它抓住了…@davidventh看到更新的答案涵盖了你的问题。这有什么不起作用?有错误吗?我测试了它,这个方法有效。它返回了所有帐户属性,而不仅仅是帐户名,这不是我想要做的。我s说它“不起作用”是不恰当的,但这不是我需要的:)哦,在这种情况下,只需将它括在括号中,并使用您已有的“.FindOne().Properties['samaccountname']”语法,或者通过管道将结果发送到Select Object以获得所需的内容。
$accountname = "mcame*"
$query = "(&(objectClass=user)(samaccountname=$accountname))"
([adsisearcher]$query).FindOne().Properties['samaccountname']