![](/img/trans.png)
[英]Pass String Array Varaible from Command Line (.BAT file) to Power Shell Script
[英]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.