在Powershell中使用通配符查找数组中键和值的索引
我一直在努力解决一个问题,我能够以一种相对体面和可接受的方式完成我需要完成的事情,但我很好奇为什么我会遇到一些问题 我对PosikSub或C++语言不太了解,但我有java、C++和其他一些经验。所以,如果我忽略了一些非常简单的事情,你必须原谅我。我不是在寻找对我的解决方案的批评,只是对我遇到的一些障碍的一些见解 我需要做的是使用Powershell查询LDAP设置。我需要知道MaxConnIdleTime,我需要将它分配给变量或通过子例程[sic](例如$ldapPolicies.MaxConnIdleTime)访问,以便通过条件语句运行它 我是如何做到这一点的:在Powershell中使用通配符查找数组中键和值的索引,powershell,Powershell,我一直在努力解决一个问题,我能够以一种相对体面和可接受的方式完成我需要完成的事情,但我很好奇为什么我会遇到一些问题 我对PosikSub或C++语言不太了解,但我有java、C++和其他一些经验。所以,如果我忽略了一些非常简单的事情,你必须原谅我。我不是在寻找对我的解决方案的批评,只是对我遇到的一些障碍的一些见解 我需要做的是使用Powershell查询LDAP设置。我需要知道MaxConnIdleTime,我需要将它分配给变量或通过子例程[sic](例如$ldapPolicies.MaxCon
$ldap=Get-ADObject-SearchBase“CN=querypolicies,CN=Directory
服务,CN=Windows
NT,CN=Services,CN=Configuration,DC=$ENV:COMPUTERNAME,DC=$DC”-Filter
'ObjectClass-like“queryPolicy”—属性ldapadminlimits
$ldap = @($ldap.ldapadminlimits)
$ldap | %{
if($_.startswith("MaxConnIdleTime")) {
$match = $_
}
}
我尝试了NTDSUtil.exe,但是,我无法将“Show Values”重定向到文本文件以便以后读取,也无法将其写入PowerShell中的变量
我尝试了启动脚本,然后运行NTDSUtil,但它只记录了PowerShell中发生的事情,而没有记录NTDSUtil中发生的事情
此外,我还尝试一次性将所有命令提供给NTDSUtil(NTDSUtil“ldap策略”“连接”“连接到服务器$ENV:COMPUTERNAME“q”显示值),但PowerShell在控制台中没有显示任何内容,我已按退出顺序返回PS>
我知道我可以使用LDP,但我对ADSI不太熟悉。研究似乎表明,尝试获取自民党垃圾场有点过时,我几乎放弃了这种尝试
我遇到的一个问题让我有点沮丧(也是我问这个问题的原因),那就是为什么我不能搜索数组并使用通配符查找项的索引?我试着这样做:
$ldap.IndexOf("MaxConnIdleTime*")
及
但它总是返回-1
如果我尝试以下操作,它将正常工作:
$ldap.IndexOf("MaxConnIdleTime=100")
考虑到这个值确实是100。但我正在验证该值是否正确
我知道我可以这样做:
if($ldap -contains "MaxConnIdleTime=100") {
DO SOMETHING...
} else {
DO SOMETHING ELSE...
}
为什么我不能使用通配符运算符搜索数组?没有含糊不清的地方,所以,它应该是有效的,对吗
我不是在寻求对我是如何做到这一点的批评,我只是想了解它为什么会这样做
谢谢 我认为PowerShell中没有简单的“通过通配符搜索数组并返回索引”cmdlet、方法、语句等
.IndexOf
不是设计用于通配符的
在数组上使用-like
运算符时,可能只找到一个匹配对象,但是-like
在数组上使用时返回一个匹配数组
将数组传递到.IndexOf()
中,然后查找本身就是数组的数组元素,即使该数组只有一个对象
这将有助于:
$ldap.IndexOf(($ldap -like "MaxConnIdleTime*")[0])
只要您始终想找到第一个。我认为PowerShell中没有简单的“通过通配符搜索数组并返回索引”cmdlet、方法、语句等
.IndexOf
不是设计用于通配符的
在数组上使用-like
运算符时,可能只找到一个匹配对象,但是-like
在数组上使用时返回一个匹配数组
将数组传递到.IndexOf()
中,然后查找本身就是数组的数组元素,即使该数组只有一个对象
这将有助于:
$ldap.IndexOf(($ldap -like "MaxConnIdleTime*")[0])
只要你一直想找到第一个。我不知道类比较运算符返回数组。谢谢您的帮助。@Rincewind它可以,但只有当左侧是数组时,
-match
也是如此。否则它将返回一个[bool]
。我不知道类比较运算符返回数组。谢谢您的帮助。@Rincewind它可以,但只有当左侧是数组时,-match
也是如此。否则它将返回一个[bool]
。看见