Powershell - создание пары ключ / значение из CSV-переменной - PullRequest
0 голосов
/ 10 января 2020

У меня есть следующий CSV-файл:

link,user,password
http://1.1.1.1,user1,password1
http://2.2.2.2,user2,password2

Используя этот скрипт, я могу извлечь значения link,user and password заголовков

# Constants.
$DELIM = ','
#$CSV_F = 'C:\Users\user\Desktop\1.csv' 

# Parse keys
$keys = (gc "${CSV_F}" -TotalCount 1).Split($DELIM)
$csv = Import-CSV "${CSV_F}"
$data = @()

# Iterate through CSV to build array of hashtables.
ForEach ($r in $csv) {
    $tmp_h = @{}

    # Create hash of key-value pairs.
    ForEach($k in $keys) {
        $tmp_h[$k] = $r.($k)
    }

    # Add hash to array of hashes.
    $data += $tmp_h
}

# Display data

foreach($i in $data){

$link = $i.link

$user = $i.user

$password = $i.password

}

Вывод:

http://1.1.1.1

user1

пароль1

http://2.2.2.2

user2

password2

Поскольку этот CSV содержит конфиденциальные данные, я хочу скрыть его содержимое.

Я выполнил это следующим образом:

Protect-CmsMessage -To "*youralias@emailaddress.com*" -Path C:\Users\user\Desktop\1.csv -OutFile C:\Users\user\Desktop\1.csv.cms

Я также могу расшифровать его:

$CSV_F = Unprotect-CmsMessage -To "*youralias@emailaddress.com*" -Path .\1.csv.cms

я сохранил незашифрованное содержимое файла 1.csv.cms в переменную $ CSV_F

$CSV_F
link,user,password
http://1.1.1.1,user1,password1
http://2.2.2.2,user2,password2

Как проанализировать переменную $ CSV_F, чтобы получить то же самое ключ: значение пары, полученной при разборе файла CSV?

Я хочу избежать сохранения незашифрованного содержимого CSV в файл.

Желаемый вывод:

http://1.1.1.1

user1

password1

http://2.2.2.2

user2

password2

1 Ответ

3 голосов
/ 10 января 2020

После запуска Unprotect-CmsMessage вы сохраняете содержимое файла в виде простого текста в переменной $CSV_F. Вам просто нужно преобразовать его из CSV в объект, с которым вы можете работать:

...
$CSV_F = Unprotect-CmsMessage -To "*youralias@emailaddress.com*" -Path .\1.csv.cms

$Data = $CSV_F | ConvertFrom-Csv

$Data
...