我在嘗試查找包含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