powershell winscp在传输后获取本地文件名,以便我可以附加到电子邮件
您好,我正在尝试获取刚下载的文件的文件名,该文件的本地路径为C:\users\user\desktop\test.txt,以便将其附加到电子邮件中。 我正在将powershell与winscp.net库一起使用 这是密码powershell winscp在传输后获取本地文件名,以便我可以附加到电子邮件,powershell,winscp,Powershell,Winscp,您好,我正在尝试获取刚下载的文件的文件名,该文件的本地路径为C:\users\user\desktop\test.txt,以便将其附加到电子邮件中。 我正在将powershell与winscp.net库一起使用 这是密码 param ( $localPath = "C:\upload\*", $remotePath = "/home/user/", $backupPath = "C:\backup\" ) try { # Load WinSCP .NET assembly
param (
$localPath = "C:\upload\*",
$remotePath = "/home/user/",
$backupPath = "C:\backup\"
)
try
{
# Load WinSCP .NET assembly
Add-Type -Path "WinSCPnet.dll"
# Setup session options
$sessionOptions = New-Object WinSCP.SessionOptions
$sessionOptions.Protocol = [WinSCP.Protocol]::Sftp
$sessionOptions.HostName = "example.com"
$sessionOptions.UserName = "user"
$sessionOptions.Password = "mypassword"
$sessionOptions.SshHostKeyFingerprint = "ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"
$session = New-Object WinSCP.Session
try
{
# Connect
$session.Open($sessionOptions)
# Upload files, collect results
$transferResult = $session.PutFiles($localPath, $remotePath)
# Iterate over every transfer
foreach ($transfer in $transferResult.Transfers)
{
# Success or error?
if ($transfer.Error -eq $Null)
{
Write-Host ("Upload of {0} succeeded, moving to backup" -f
$transfer.FileName)
Send-MailMessage -From $From -to $To -Cc $Cc -Bc $Bc -Attach $session.GetFileInfo(Filename) -Subject $Subject -Body $Body -SmtpServer $SMTPServer
# Upload succeeded, move source file to backup
Move-Item $transfer.FileName $backupPath
}
else
{
Write-Host ("Upload of {0} failed: {1}" -f
$transfer.FileName, $transfer.Error.Message)
}
}
}
finally
{
# Disconnect, clean up
$session.Dispose()
}
exit 0
}
catch [Exception]
{
Write-Host $_.Exception.Message
exit 1
}
提前感谢您如果您想使用WinSCP库中的$session.getFileInfo(),请查找$transfer.destination。例如,
$session.getFileInfo($transfer.Destination)
否则,如果您正在从本地路径读取文件的属性,则可以使用Powershell的内置cmdlet:
get-itemproperty$transfer.filename
此脚本上载文件。那是打字错误吗?你想要上传的所有文件的名称吗?我正在尝试获取文件名,而它在循环中,它将为每个文件发送电子邮件。这不是你已经使用的$transfer.FileName
?我尝试过它不起作用。我得到:参数为null或空。请提供一个不为null或空的参数,然后重试该命令。我没有尝试使用$session.getFileInfo(),这只是我最后一次尝试。我只是试图获得本地文件下载后的路径,以便我可以附加到一封电子邮件。例如,如果最后一个文件是C:\users\user\desktop\test.txt,并假设它存储在$transfer.filename中(我知道它不是远程文件),我将尝试查找此处的内容-Attach(*此处即$transfer.filename)