我在尝试查找包含Active Directory用户的数组中的项目的索引号时遇到问题。
我创建数组如下:搜索包含活动目录用户的powershell数组
$outarray = @()
$outarray = get-aduser -Filter * -Properties LastLogon | select "Name","SAMAccountName","LastLogon" | sort samaccountname
现在我有用户在数组中,我可以使用标准的变量,它证明查询
$outarray[0]
$outarray[1]
返回正是我期望的。
BUT
我完全无法搜索阵列中的name
或SAMAccountName
的索引,因为它们是该阵列的特性。
$index = [array]::IndexOf($outarray.samaccountname, "testuser")
只有在testuser
是阵列中的第一个用户时才返回-1(未找到)或0。 我在数组中找不到任何其他用户索引。
我得到索引后的目标是用它来更新lastlogon的属性。这个工程,如果我做手工 例如
$outarray[123].lastlogon = 12345678
我可以使这项工作的唯一方法是手工打造的阵列开始,每次一个条目,而不是直接
foreach ($user in $outArray)
{
$myobj = @()
$myobj = "" | Select "Name","SAMAccountName","LastLogon"
#fill the object
$myobj.Name = $user.name
$myobj.SAMAccountName = $user.samaccountname
$myobj.LastLogon = $user.LastLogon
#Add the object to the array
$userarray += $myobj
}
$userarray[[array]::IndexOf($userarray.samaccountname, "testuser")].LastLogon = 12345678
然后填补了搜索工作。我认为这与房地产类型有关,但在这个阶段,我完全超出了我的深度。
在此先感谢您的帮助,我不是Powershell阵列专家,他们让我困惑! :)
嗯.. PS的版本是什么?你原来的一套命令返回PS3和PS4的预期值。 – Raf 2014-10-20 09:27:30
你有没有想过只使用for循环,然后使用计数器变量作为索引? – Paul 2014-10-20 09:57:59
我也同意拉夫,你的代码在我的机器上工作正常 – Paul 2014-10-20 10:05:09