Вы можете использовать следующее:
$CSV = Import-Csv "C:\csv" |
Select-Object Associate_First_Name,Associate_Last_Name,Associate_Email,Associate_SIN_SSN,@{n='Password';e={$_.Associate_First_Name.Substring(0,1).ToLower()+ $_.Associate_Last_Name.Substring(0,1).ToLower() + $_.Associate_SIN_SSN.Substring(($_.Associate_SIN_SSN.Length-4))}}
Для извлечения частей строки вы можете использовать. NET метод Substring () из класса String.
Вы можете немного улучшить читабельность, определив вычисляемое свойство перед командой Select-Object
. Также индексируется строковое значение, и отдельные символы могут быть извлечены с использованием индекса ([0]
- первый символ).
$Password = @{n='Password'
e={ $_.Associate_First_Name[0] + $_.Associate_Last_Name[0] + $_.Associate_SIN_SSN.Substring(($_.Associate_SIN_SSN.Length-4)) }
}
$CSV = Import-Csv "C:\csv" |
Select-Object Associate_First_Name,Associate_Last_Name,Associate_Email,Associate_SIN_SSN,$Password
Другой альтернативой читабельности является не использовать вычисляемые свойства с Select-Object
и вместо этого создайте пользовательские объекты. Это также добавляет гибкости для манипулирования каждым значением перед его выводом.
$CSV = Import-Csv 'C:\csv' | ForEach-Object {
$First = $_.Associate_First_Name.ToLower()
$Last = $_.Associate_Last_Name.ToLower()
$Email = $_.Associate_Email.ToLower()
$SSN = $_.Associate_SIN_SSN
$Password = $First[0]+$Last[0]+$SSN.Substring(($SSN.Length-4))
[pscustomobject]@{ 'Associate_First_Name' = $First
'Associate_Last_Name' = $Last
'Associate_Email' = $Email
'Associate_SIN_SSN' = $SSN
'Password' = $Password
}
}