0

我尝试将文件复制到 SFTP 服务器,我使用 posh shh,如果它被成功移动,那么我获取文件名并在日志文件中添加新行,否则我添加文件未移动或文件不在源目录中的行。我了解如何将行复制并添加到日志文件中,但我无法将正确的逻辑带入此脚本。

请在下面查看我的代码:

# SFTP Upload of Inventory From CSV files to WPEngine SFTP. Requires installation of Posh-SSH 
# Install-Module -Name Posh-SSH (https://github.com/darkoperator/Posh-SSH)
 
# Set the credentials
$Password = ConvertTo-SecureString 'almighty1992' -AsPlainText -Force
$Credential = New-Object System.Management.Automation.PSCredential ('sftpuser', $Password)
 
# Set local file path and SFTP path
$FilePath1 = "D:\TEST.txt"

$SftpPath = '/shared/'
 
# Set the Hostname of the SFTP server
$SftpServer = '192.168.1.215'
 
# Load the Posh-SSH module
#Import-Module Posh-SSH
 
# Establish the SFTP connection
$ThisSession = New-SFTPSession -ComputerName $SftpServer -Credential $Credential -AcceptKey -Port 22
 
# Upload the files to the SFTP path
Set-SFTPFile -SessionId ($ThisSession).SessionId -Localfile $FilePath1 -RemotePath $SftpPath -Overwrite

 
#Disconnect all SFTP Sessions
Get-SFTPSession | % { Remove-SFTPSession -SessionId ($_.SessionId) }

Add-Content D:\LOG.TXT "Test" 

我不知道如何添加的代码。如果我理解正确,我需要检查源目录中是否存在该文件。

#检查源文件是否存在 Test-Path -Path D:\TEST.txt -PathType Leaf

列出复制文件后的 sftp 目录文件 $FilePath = Get-SFTPChildItem -sessionID $SFTPSession.SessionID -path $SftpPath

#对于每个文件 ForEach ($LocalFile in $FilePath) {

if($LocalFile.name -eq "." -Or $LocalFile.name -eq ".." )
{
      Write-Host "Files Ignored!"
}
else
{
    Write-Host $LocalFile
    Get-SFTPFile -SessionId $SFTPSession.SessionID -LocalPath $LocalPath -RemoteFile $localfile.fullname 

力量 }

}

4

1 回答 1

0

从 SFTP 会话中获取文件列表

$Files = (Get-SFTPChildItem -SessionId $Session.SessionId -Path "$sftpRemotePath") | Select-object Name,FullName,Length | Sort-Object FullName

过滤 /。和 /..

$msgFiles = $Files | where-object {$_.FullName -ne "/." -and $_.FullName -ne "/.."}

将文件添加到日志中,每个文件后用新行分隔

$filelist = $msgFiles | Foreach-Object " ${($_.Name)`n"}

最后将文件列表添加到日志文件中

Add-Content -value $filelist -Path $logfile

注意:在必要时更改变量。

于 2022-02-21T08:19:22.043 回答