powershell WinSCP从xml文件获取密码

kg7wmglp  于 2023-06-06  发布在  Shell
关注(0)|答案(2)|浏览(339)

我已成功创建了使用WinSCPnet.dll(.NET程序集)的语法。此外,还创建了一个config.xml文件来提供凭据并启动会话。我成功地做到了这一切,除了密码!
以下是有效的脚本:

[xml]$Config = Get-Content "*\Config.xml"
# Load WinSCP .NET assembly
Add-Type -Path "C:\Program Files (x86)\WinSCP\WinSCPnet.dll"
# Set up session options
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
    Protocol = [WinSCP.Protocol]::Sftp
    HostName = $Config.Configuration.HostIP
    UserName = $Config.Configuration.UserName
    Password = "Actual Password"
    PrivateKeyPassphrase = $Config.Configuration.PassPhrase
    SshHostKeyFingerprint = $Config.Configuration.FingerPrint
    SshPrivateKeyPath = $Config.Configuration.SshPrivateKeyPath
}

我无法通过将“实际密码”替换为$Config. Configuration. Password来使其工作。我可以获取对象$Config.Configuration.Password,以便在自己运行它时输出正确的密码。在xml文件中,我考虑了转义字符。有没有人知道其他的原因,为什么这不会工作?
错误消息:

Exception calling "Open" with "1" argument(s): "Connection has been unexpectedly closed. Server sent command exit status 0.
Authentication log (see session log for details):
Using username "Actual Username".
Authenticating with public key "imported-openssh-key" from agent.
Further authentication required
Access denied.
Authentication failed."
At *\PS_winSCP.ps1:25 char:5
+     $session.Open($sessionOptions)
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : SessionRemoteException

任何帮助将不胜感激!谢谢你

30byixjq

30byixjq1#

解决方案:
用户名= $config.configuration.用户名

安全密码=ConvertTo-SecureString$config.Configuration.Password

2skhul33

2skhul332#

我将尝试提供主要的想法,而不提供太多关于密码的细节。
“实际密码”是我直接输入PowerShell的密码,以便打开会话。这不一定与服务器的TRUE密码匹配。PowerShell无法使用TRUE密码,因为它有自己的一些特殊字符。
因此,当“实际密码”(不是TRUE密码)输入到xml文件中时,它被正确地读入PowerShell,但密码不正确。所以我花了一段时间才弄清楚xml文件没有确切的TRUE密码。
长话短说;尝试确认这密码在这xml文件是完全正确的.

相关问题