PowerShell和WinSCP脚本检查SFTP远程目录下是否有超过4个文件



使用PowerShell语言和WinSCP,我试图创建一个脚本,每天检查SFTP远程目录,看看是否有超过4个文件。

如果文件少于4个,则可以,但如果文件多于4个,则会输出错误消息。

多亏了WinSCP,连接是自动创建的,我可以在下面连接到SFTP-Server:

& "C:Program Files (x86)WinSCPWinSCP.com"
/log="C:UsersscriptsWinSCP.log" /ini=nul
/command
"open sftp://..."
"cd" `
"cd ./my remote directory"
#"ls *.csv"
#"exit"
$winscpResult = $LastExitCode
if ($winscpResult -eq 0)
{
Write-Host "Success"
}
else
{
Write-Host "Error"
}
exit $winscpResult

我不知道我是否必须通过脚本或。net汇编语言来完成:

# Load WinSCP .NET assembly
Add-Type -Path "WinSCPnet.dll"
# Set up session options
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
Protocol = [WinSCP.Protocol]::Sftp
HostName = ""
UserName = ""
Password = ""
SshHostKeyFingerprint = ""
TimeoutInMilliseconds = 60000
}
$session = New-Object WinSCP.Session
try
{
# Connect
$session.Open($sessionOptions)
# Your code
}
finally
{
$session.Dispose()
}

然而,我目前不知道如何执行条件。

当脚本完成后,目标将是使用它到Jenkins中每天运行它。

你能帮我建立检查条件和其他吗?谢谢!

使用WinSCP .NET程序集,这很简单:

$files =
$session.ListDirectory($remotePath).Files |
Where-Object { -Not $_.IsDirectory }
$count = $files.Count
if ($count -gt 4)
{
Write-Host "There are more than 4 files in $remotePath"
}

我终于修改了Martin的脚本,现在它可以成功检查我的目录中是否有少于4个文件:

$remotePath = "/my-directory"
$files = $session.ListDirectory($remotePath).Files | Where-Object { -Not $_.IsDirectory }
$count = $files.Count
if ($count -le 4)
{
Write-Host "There are less than 4 files into the"$remotePath" directory. All good!"
}
else
{
Write-Host "There are more than 4 files into the"$remotePath" directory. Please check!"
}

我实际上需要。文件$session.ListDirectory后的参数

谢谢!

最新更新