Powershell-通过CSV变量创建键/值对

我有以下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

password1

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,password2

如何解析$ CSV_F变量以获取与解析CSV文件时得到的相同的key:value对?

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

所需的输出:

http://1.1.1.1

user1

password1

http://2.2.2.2

user2

password2

we12q 回答:Powershell-通过CSV变量创建键/值对

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

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

$Data = $CSV_F | ConvertFrom-Csv

$Data
本文链接:https://www.f2er.com/2788503.html

大家都在问