【发布时间】:2017-10-12 19:04:20
【问题描述】:
我被困在某一点上,要求是我必须将用户名、密码、主机名和主机密钥存储在 CSV 文件中,并且我必须读取并将值存储在可用于建立 SFTP 连接的本地变量中。
我的 CSV 如下所示:
主机名、用户名、密码、SshHostKey指纹 abc.com,李尔,qwert,ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx...我用来读取和存储不同列值的代码是:
Add-Type -Path "WinSCPnet.dll"
$csv = Import-Csv c:\test\output.csv
$csv | ForEach-Object
{
$Hostname = $_.hostname
$username = $_.username
$Password = $_.Password
"$Hostname - $username -$Password"
}
# Set up session options
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
Protocol = [WinSCP.Protocol]::Sftp
HostName = $Hostname
UserName = $username
Password = $Password
SshHostKeyFingerprint = "ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"
}
尝试显示值时没有显示任何内容。
【问题讨论】:
-
出于一般安全原因,您不能只将纯文本密码通过管道传输到 WinSCP(或任何其他 Microsoft 应用程序)。您需要使用安全密码 (
ConvertTo-SecureString -String "something" -AsPlainText -Force) 创建凭据 (New-Object Management.Automation.PSCredential),例如:stackoverflow.com/a/41548976/1701026
标签: powershell csv sftp winscp