簡體   English   中英

陣列的電源殼取回線

[英]power-shell retrieving line from array

因此,如果我從CSV文件創建數組

name,age,height,fruit
Jon,34,5,orange
Jane,23,4,apple
Dave,27,6,pear

我可以閱讀使用

$list = Import-CSV .....

但現在我有一個問題。 “告訴我簡”

所以我可以說

foreach ($val in $list)
{
    if ($val.name = "jane" ) {$currentuser = $val}
}

write-host $currentuser.name
write-host $currentuser.age
write-host $currentuser.hight
write-host $currentuser.fruit

有沒有比逐步執行更好的方法呢? 在我的實際情況中,我有一份來自HR的員工列表,另一份與Active Directory的員工列表。 我想逐步瀏覽HR列表以找到AD中的用戶,將此用戶設置為變量/對象。 然后使用來自HR的信息來更新用戶。

上面的方法可以工作,但要遍歷幾千個用戶的兩個列表似乎效率很低。

給定從CSV創建的數組,我想要一個方法,通過輸入字符串“ jane”,它將把jane的信息返回給我可以使用的對象。

如果您有兩個列表,並且兩個列表都有不同的鍵,可以通過這兩個鍵進行關聯,則最好的方法是將一個列表存儲在查找表中(任何類型的詞典都可以,包括PowerShell中的哈希表),然后依次循環瀏覽其他清單:

$HRList = @'
Name,Position,Department
John,Manager,Sales
Bob,Worker,Production
Sally,Accountant,Finance
'@ |ConvertFrom-Csv

$ADList = @'
Name,Username
Sally,sallysalt
Bob,bobburrows
John,johnjames
'@ |ConvertFrom-Csv

# Convert the AD list to a hash table
$ADLookupTable = @{}
foreach($ADUser in $ADList)
{
    $ADLookupTable[$ADUser.Name] = $ADUser
}

# Go through HR list
foreach($HRUser in $HRList)
{
    # Now you can find the relevant object in the other list
    $ADUser = $ADLookupTable[$HRUser.Name]
    Set-ADUser -Identity $ADUser.Username -Title $ADUser.Position -Department $ADUser.Department
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM