2017-04-24 34 views
1

私はWinSCPのは、PowerShellを使用してファイルの転送を自動化しようとしています。 .NETアセンブリをインストールしました。私が追加したコードでは、プライバシーのために資格情報とホスト名を取り出しました。また、WinSCPnet.dllへのフルパスも使用しています。ここで私が得ているエラーは、次のとおりです。WinSCPの.NETアセンブリ - SessionOptionsの作成 - 指定された値が有効でないか、またはプロパティは読み取り専用です

Error: The value supplied is not valid, or the property is read-only. Change the value, and then try again.

$sessionOptionsは、第五行で定義された場合、私はこれを取得しています。私はこれを実行するために何ができるかの任意のアイデア?

try 
{ 
    Add-Type -Path "WinSCPnet.dll" 

    $sessionOptions = New-Object WinSCP.SessionOptions -Property @{ 
     Protocol = [WinSCP.Protocol]::Sftp 
     HostName = "HostName" 
     UserName = "UserName" 
     Password = "Password" 
     SshHostKeyFingerprint = "ssh-rsa 2048 Fingerprint here" 
    } 

    $session = New-Object WinSCP.Session 

    try 
    { 
     # Connect 
     $session.Open($sessionOptions) 

     # Upload files 
     $transferOptions = New-Object WinSCP.TransferOptions 
     $transferOptions.TransferMode = [WinSCP.TransferMode]::Binary 

     $transferResult = 
      $session.PutFiles("Source", "Destination", $False, $transferOptions) 

     # Throw on any error 
     $transferResult.Check() 

     # Print results 
     foreach ($transfer in $transferResult.Transfers) 
     { 
      Write-Host ("Upload of {0} succeeded" -f $transfer.FileName) 
     } 
    } 
    finally 
    { 
     # Disconnect, clean up 
     $session.Dispose() 
    } 

    exit 0 
    } 
catch [Exception] 
{ 
    Write-Host ("Error: {0}" -f $_.Exception.Message) 
    exit 1 
} 

答えて

2

最も可能性の説明はSessionOptions.SshHostKeyFingerprintの値が無効であることで、あなたのコード内の他のプロパティが検証されていません。

は、正しい値を取得するためにgenerate a code templateにWinSCPのGUI機能を使用してください。

Automatic host key verificationも読んでください。


あなたはより多くの助けが必要な場合は、私たちにあなたが使用している実際の値を表示する必要がありますが(それが故に、それは公共情報、する必要があり、サーバー公共鍵のフィンガープリントですそれを隠す)。

関連する問題