Мне нужно проверить, существует ли значение столбца из первого файла CSV в любом из трех других файлов CSV, и вернуть значение в новый файл CSV в порядке приоритета. Поэтому, если поле имени пользователя из allStaff.csv существует в списке имен пользователей в файле sessionVPNct.csv, поместите текст stati c в окончательный файл csv как «VPN». Если он не существует, проверьте следующий csv-файл: sessionCRXct.csv, затем введите текст c CRX, если не проверьте последний файл csv: sessionTMSct.csv, а затем введите текст c TM: если нет текст stati c помещается в окончательный CSV-файл. У меня есть четыре файла CSV, как показано ниже:
1. allStaff.csv
2. VPN.csv
3. CRX.csv
4. TMS.csv
Я импортировал файлы CSV в переменные, как показано ниже:
$allUsers = Import-Csv -Path "C:\allStaff.csv"
$vpn = Import-Csv -Path "C:\VPN.csv" | Select-Object -ExpandProperty UserName
$crx = Import-Csv -Path "C:\CRX.csv" | Select-Object -ExpandProperty UserName
$tms = Import-Csv -Path "C:\TMS.csv" | Select-Object -ExpandProperty UserName
Переменная $ allUsers отображает следующее:
Firstname LastName Username Position Area
--------- -------- -------- -------- ----
Joe Bloggs jbloggs Gardener Maintenance
Jim Smith jsmith Accountant Finance
Bob Seger bseger HR Advisor Human Resources
Adam Boson aboson Customer Support IT
Adele bree abree Payroll Finance
В переменной $ vpn отображается следующее:
Username
--------
jbloggs
jsmith
В переменной $ crx отображается следующее:
Username
--------
jbloggs
jsmith
bseger
В переменной $ tms отображается следующее:
Username
--------
jbloggs
jsmith
bseger
aboson
Затем у меня есть следующая строка, чтобы запустить файл CSV результата
$result = $allUsers | Select-Object *,ConnectionMethod
Не совсем уверен, как сделать окончательный запрос, который, я считаю, должен быть, если еще l oop to go через все строки в переменной $ result и проверьте другой CSV, если поле имени пользователя существует, затем верните текст stati c.
$result | Export-Csv -Path "C:\allStaffConnections.csv"
Вот как мне нужен финальный файл allStaffConnections.csv файл для отображения.
Firstname LastName Username Position Area ConnectionMethod
--------- -------- -------- -------- ---- --------------
Joe Bloggs jbloggs Gardener Maintenance VPN
Jim Smith jsmith Accountant Finance VPN
Bob Seger bseger HR Advisor Human Resources CRX
Adam Boson aboson Customer Support IT TMS
Adele bree abree Payroll Finance none
Я на правильном пути с приведенным ниже кодом?
$allUsers = Import-Csv -Path "C:\allStaff.csv"
$vpn = Import-Csv -Path "C:\VPN.csv" | Select-Object -ExpandProperty UserName
$crx = Import-Csv -Path "C:\CRX.csv" | Select-Object -ExpandProperty UserName
$tms = Import-Csv -Path "C:\TMS.csv" | Select-Object -ExpandProperty UserName
$vpnText = 'VPN'
$crxText = 'CRX'
$txsText = 'TMS'
$noneText = 'none'
$allUsersExtended = $allUsers | Select-Object *,ConnectionMethod
$results = $allUsersExtended.ForEach(
{
if($vpn -Contains $PSItem.UserName) {
# add $vpnText to ConnectionMethod column for that row in the $result
$PSItem.ConnectionMethod = $vpnText
}elseif($crx -Contains $PSItem.UserName) {
# add $crxText to ConnectionMethod column for that row in the $result
$PSItem.ConnectionMethod = $crxText
}elseif($tms -Contains $PSItem.UserName) {
# add $txsText to ConnectionMethod column for that row in the $result
$PSItem.ConnectionMethod = $tmsText
}else {
# add $noneText to ConnectionMethod column for that row in the $result
$PSItem.ConnectionMethod = $noteText
}
})
$results | Export-Csv -Path "C:\allStaffConnections.csv" -NoTypeInformation
Это дает мне пустой файл allStaffConnections.csv. Я построчно запускаю код и могу получить:
$allUsersExtended = $allUsers | Select-Object *,ConnectionMethod
, что дает мне дополнительный столбец "ConnectionMethod", но после запуска l oop он дает мне пустое allStaffConnections. CSV-файл.