powershell - PowerShell 和 WinSCP 脚本检查 SFTP 远程目录中是否有超过 4 个文件
问题描述
使用 PowerShell 语言和 WinSCP,我正在尝试创建一个脚本,该脚本每天检查 SFTP 远程目录以查看其中是否有超过 4 个文件。
如果文件少于 4 个没关系,但如果文件多于 4 个,则会输出错误消息。
感谢 WinSCP,自动创建了连接,我可以在下面连接到 SFTP 服务器:
& "C:\Program Files (x86)\WinSCP\WinSCP.com"
/log="C:\Users\scripts\WinSCP.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"
}
推荐阅读
- python - Django:如何更正创建的日期/时间
- c# - 如何在 axml 中使用自定义文本视图?
- android - 错误运行应用程序默认活动未找到
- javascript - pdfMake管道上的Nodejs内存不足
- c# - 如何在c#中检查两个字符串的长度是否相等?
- sql - 如何获得列之间的唯一组合?
- haskell - Haskell 空主函数
- tensorflow - 如何从对象检测中加载保存的模型以进行推理?
- python - 错误:TypeError:“str”对象在尝试选择随机获胜者时无法解释为整数(Python)
- javascript - 无法理解来自 JavaScript 的 WebAuthn API 错误