我需要使用PS从SFTP服务器上的远程目录中删除与某些模式(名称包含特定字符串)匹配的文件。
答案 0 :(得分:2)
PowerShell中不支持SFTP。您必须使用第三方SFTP库。
例如,使用WinSCP .NET assembly,您可以这样做:
Add-Type -Path "WinSCPnet.dll"
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
Protocol = [WinSCP.Protocol]::Sftp
HostName = "example.com"
UserName = "username"
Password = "password"
SshHostKeyFingerprint = "ssh-rsa 2048 ..."
}
$session = New-Object WinSCP.Session
$session.Open($sessionOptions)
$session.RemoveFiles("/remote/path/*string*").Check()
$session.Dispose()
WinSCP GUI can generate code template为您
(我是WinSCP的作者)
答案 1 :(得分:0)
您还可以尝试ssh.net库(非常轻巧)
https://github.com/sshnet/SSH.NET
构建之后,基本语法将如下所示:
Add-Type -Path "path\to\Renci.SshNet.dll"
$conn = New-Object Renci.SshNet.SftpClient -ArgumentList @($HostName, $PortNumber, $UserName, $Password)
$conn.connect()
$files = $conn.ListDirectory("DirName").FullName | where { $_ -like "*.csv"}
$files | foreach { $conn.Delete($_) }
您还可以安装GitBash,然后在终端中可以使用ssh命令。