一直在尝试使用 posh-ssh 连接到 sftp。当我运行它时工作正常,当我尝试通过 Windows 任务调度程序运行它时它不起作用。
我尝试切换要运行脚本的用户,例如管理员、我自己、系统等。
我曾尝试使用密钥保存密码并稍后解密。
$Password = ConvertTo-SecureString 'sftpPW' -AsPlainText -Force
$Credential = New-Object System.Management.Automation.PSCredential($SFTPUser, $Password)
$sftpIP = 'hostIP'
$sftpSess = New-SFTPSession -ComputerName $SftpIp -Credential $Credential
然后其他方法 VVVVVVVVVV 这部分不是在脚本中运行而是创建密码
Get-Random -Count 32 -InputObject (0..255) | Out-File -FilePath encrypt
ConvertTo-SecureString 'sftpPW' -AsPlainText -Force | convertFrom-secureString -key (get-content -path encrypt) | Out-File pw
^^^^^^^^^^
$SFTPUser="user"
$password = (cat pw | ConvertTo-SecureString -key (Get-Content -path encrypt))
$Credential = New-Object System.Management.Automation.PSCredential($SFTPUser, $Password)
$sftpIP = 'hostIP'
$sftpSess = New-SFTPSession -ComputerName $SftpIp -Credential $Credential
编辑*
Import-Module Posh-SSH
$datestuff = Get-Date
echo "start $datestuff" > C:\sftptestlog
$SFTPUser="user"
echo $sftpuser >> C:\sftptestlog
$Password = ConvertTo-SecureString 'sftpPW' -AsPlainText -Force
echo $password >> C:\sftptestlog
$Credential = New-Object System.Management.Automation.PSCredential($SFTPUser, $Password)
$sftpIP = 'hostip'
echo $Credential >> C:\sftptestlog
echo $sftpip >> C:\sftptestlog
$sftpSess = New-SFTPSession -ComputerName $SftpIp -Credential $Credential
echo $sftpSess >> C:\sftptestlog
sftptestlog 的预期输出
开始时间 2019 年 9 月 10 日 16:31:19
用户
System.Security.SecureString
用户名密码
-------- --------
用户 System.Security.SecureString
主机IP
已连接的 SessionId 主机
--------- ---- ---------
2 hostIP 真
以上输出仅在从命令行运行脚本时发生。使用调度程序时,输出是相同的,只有最后几行(从 sessionID 开始)没有打印出来。