はじめに
CSVファイルに保存されたプレーンテキストのパスワードを暗号化します。
- Input:PlainPassword.csv
- Output:SecurePassword.csv
暗号化したパスワードはCredentialを生成する時に利用します。
環境
OS:Windows10
.Net Framework:4.7
PowerShellのバージョン:5.1.17763.1007
ソースコード
BulkPasswordEncryption.ps1
#######################################################################################
# 概要:プレーンテキストのパスワードを一括して暗号化します。
# 作成者:ITStudy
# 作成日:2020/05/28
# 必要なファイル:BulkPasswordEncryption.ps1(このファイルです)
# PlainPassword.csv(パスワードファイルです)
#######################################################################################
$CurrentDir = $PSScriptRoot
$Input = "PlainPassword.csv"
$Output = "SecurePassword.csv"
$SecurePassword = @()
function Encryption($PlainPassword ){
#プレーンテキストをSecureStringオブジェクトに変換する
$secure = ConvertTo-SecureString -string $PlainPassword -AsPlainText -Force
#SecureStringオブジェクトを暗号化された標準文字列に変換する
$encrypt = ConvertFrom-SecureString -SecureString $secure
Return $encrypt
}
Import-Csv (Join-Path $CurrentDir $Input) -Encoding Default | %{
$SecurePassword += [pscustomobject]@{"HostName"=$_.HostName; "IP"=$_.IP; "UserName"=$_.UserName; "Password"=Encryption($_.Password)}
}
#CSV出力
$SecurePassword | Export-Csv -NoTypeInformation (Join-Path $CurrentDir $Output) -Encoding Default
PlainPassword.csv
HostName,IP,UserName,Password
windows2003,192.168.xxx.xxx,administrator,pass123
windows2008,192.168.xxx.xxx,administrator,pass123
windows2012,192.168.xxx.xxx,administrator,pass123
windows2016,192.168.xxx.xxx,administrator,pass123
windows2019,192.168.xxx.xxx,administrator,pass123
SecurePassword.csv
暗号化したパスワードは文字数がかなり長いのですが、わかりやすくするために短くしています。
HostName,IP,UserName,Password
windows2003,192.168.xxx.xxx,administrator,N&Y7rkV%i4EGmtZx
windows2008,192.168.xxx.xxx,administrator,N&Y7rkV%i4EGmtZx
windows2012,192.168.xxx.xxx,administrator,N&Y7rkV%i4EGmtZx
windows2016,192.168.xxx.xxx,administrator,N&Y7rkV%i4EGmtZx
windows2019,192.168.xxx.xxx,administrator,N&Y7rkV%i4EGmtZx
今回、出力ファイルは別の名前を指定していますが、これだとPlainPassword.csvファイルを開くとパスワードがばれてしまいます。InputとOutputを同じ名前にすると平文のパスワードを暗号化したファイルに置き換えることができるのでこちらの方が安全ですね。