Powershell - 从 CSV 变量创建 key/value 对

Powershell - create key/value pair from CSV variable

我有以下 CSV 文件:

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

使用这个脚本我可以提取 link,user and password headers

的值
# Constants.
$DELIM = ','
#$CSV_F = 'C:\Users\user\Desktop.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

password1

http://2.2.2.2

user2

password2

因为此 CSV 包含敏感数据,所以我想隐藏它的内容。

我是通过以下方式完成的:

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

我也能解密:

$CSV_F = Unprotect-CmsMessage -To "*youralias@emailaddress.com*" -Path ..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 文件时相同的 key:value 对?

我想避免将未加密的 CSV 内容存储到文件中。

期望的输出:

http://1.1.1.1

user1

password1

http://2.2.2.2

user2

password2

在 运行 Unprotect-CmsMessage 之后,您将文件内容作为纯文本保存在 $CSV_F 变量中。您只需将它从 CSV 转换为您可以使用的对象:

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

$Data = $CSV_F | ConvertFrom-Csv

$Data