我尝试将文件复制到 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
力量 }
}