実装 †
WinSCP使用 †
実装例 †
テストスクリプト †
#
# SFTP TestScript with WinSCP
# 1) upload files.
# 2) download 1) files.
#
# reference)
# https://qiita.com/mima_ita/items/35261ec39c3c587210d8
# https://winscp.net/eng/docs/library_session
#
# Set TestPath
$testDirectory = Get-Date -Format "yyyyMMdd_HHmm"
$uploadLocalPath = "C:\var\test\upload"
$downloadLocalPath = "C:\var\test\download\${testDirectory}"
try
{
# Load WinSCP .NET assembly
Add-Type -Path 'C:\Program Files (x86)\WinSCP\WinSCPnet.dll'
# Setup session options
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
Protocol = [WinSCP.Protocol]::Sftp
HostName = "localhost"
UserName = "test"
Password = "XXXXXXXX"
GiveUpSecurityAndAcceptAnySshHostKey = $True
}
$session = New-Object WinSCP.Session
try
{
# Connect
$session.Open($sessionOptions)
# Force binary mode transfer
$transferOptions = New-Object WinSCP.TransferOptions
$transferOptions.TransferMode = [WinSCP.TransferMode]::Binary
# Create Remote TestDirectory
if (!$session.FileExists($testDirectory)) {
$session.CreateDirectory($testDirectory)
}
# Upload files to TestDirectory
$transferResult =
$session.PutFiles($uploadLocalPath, $testDirectory, $False, $transferOptions)
$transferResult.Check()
# Download files from TestDirectory
if (!(Test-Path $downloadLocalPath)) {
New-Item $downloadLocalPath -ItemType Directory
}
$transferResult =
$session.GetFiles($testDirectory, $downloadLocalPath, $False, $transferOptions)
# Throw on any error to emulate the default "option batch abort"
$transferResult.Check()
}
finally
{
# Disconnect, clean up
$session.Dispose()
}
exit 0
}
catch
{
Write-Host "Error: $($_.Exception.Message)"
exit 1
}