我有以下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
}
输出:
user1
密码1
user2
password2
因为此CSV包含敏感数据,所以我想隐藏其内容。
我通过以下方式完成了它:
Protect-CmsMessage -To "*[email protected]*" -Path C:\Users\user\Desktop\1.csv -OutFile C:\Users\user\Desktop\1.csv.cms
我也可以解密它:
$CSV_F = Unprotect-CmsMessage -To "*[email protected]*" -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内容存储到文件中。
所需的输出:
user1
密码1
user2
password2
运行Unprotect-CmsMessage
后,您将文件内容另存为纯文本格式$CSV_F
。您只需要将其从CSV转换为可以使用的对象:
...
$CSV_F = Unprotect-CmsMessage -To "*[email protected]*" -Path .\1.csv.cms
$Data = $CSV_F | ConvertFrom-Csv
$Data