サーバー上の最新のファイルをダウンロードする WinSCP PowerShell スクリプトがあります。サーバー上のすべてのファイルタイプの最新のファイルをダウンロードするように調整したいと思います。
ファイルの拡張子をfilename.txt
( example.al
-> al.txt
) として各ファイルに名前を付けるためのボーナス ポイント。これが私のコードです:
try
{
# Connect
$session.Open($sessionOptions)
# Get list of files in the directory
$directoryInfo = $session.ListDirectory($remotePath)
# Select the most recent file
$latest =
$directoryInfo.Files |
Where-Object { -Not $_.IsDirectory } |
Sort-Object LastWriteTime -Descending |
Select-Object -First 1
$extension = [System.IO.Path]::GetExtension($latest.Name)
"GetExtension('{0}') returns '{1}'" -f $fileName, $extension
# Any file at all?
if ($latest -eq $Null)
{
Write-Host "No file found"
exit 1
}
# Download the selected file
$session.GetFiles($session.EscapeFileMask($remotePath + $latest.Name), $localPath + $extension).Check()
現在、ファイルを として保存していますが.extension
、私が望むのはextension.txt
.
ありがとう!
編集:
このコードを試してみると、サーバー上のすべてのファイルがダウンロードされました。
$session = New-Object WinSCP.Session
try
{
# Connect
$session.Open($sessionOptions)
# Get list of files in the directory
$directoryInfo = $session.ListDirectory($remotePath)
# Select the most recent file
$latest = $directoryInfo.Files |
Where-Object { -Not $_.IsDirectory } |
Group-Object Extension |
ForEach-Object {
$_.Group | Sort-Object LastWriteTime -Descending | Select -First 1
$session.GetFiles($session.EscapeFileMask($remotePath + $_.Name), $localPath).Check()
}
$extension = [System.IO.Path]::GetExtension($latest.Name)
"GetExtension('{0}') returns '{1}'" -f $fileName, $extension
# Any file at all?
if ($latest -eq $Null)
{
Write-Host "No file found"
exit 1
}
# Download the selected file
}
finally
{
# Disconnect, clean up
$session.Dispose()
}