1

我需要使用 PS 从 SFTP 服务器上的远程目录中删除与某些模式(包含特定字符串的名称)匹配的文件。

4

2 回答 2

3

PowerShell 中没有对 SFTP 的本机支持。您必须使用第 3 方 SFTP 库。

例如,使用WinSCP .NET 程序集,您可以这样做:

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 可以为您生成代码模板

(我是WinSCP的作者)

于 2018-11-16T15:12:54.827 回答
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 命令了。

于 2018-11-16T16:45:55.627 回答