如何在 WinSCP 命令中执行的 PowerShell 脚本中传递参数?
How to pass parameters in PowerShell script which executes in WinSCP command?
我有一个 PowerShell 脚本
cd "C:\Program Files (x86)\WinSCP"
. .\WinSCP.exe /console /script="L:\Work\SAS Data\FTP\local2remote.txt" /log=log.txt
调用WinSCP命令文件
option batch on
open ftp://user:pass@host -passive=on
lcd "J:\Work\SAS Data\Roman\Lists"
put target.csv
exit
我想将 "J:\Work\SAS Data\Roman\Lists" 转换为 PowerShell 脚本中的参数,该参数可以在 txt 文件中传递。文件 target.csv 也是如此。任何帮助表示赞赏。
最简单的方法(不涉及编写临时脚本文件的方法)是为 WinSCP 切换到 /command
:
# You don't need the . operator to run external programs
.\WinSCP.exe /console /log=log.txt /command `
'open ftp://user:pass@host -passive=on' `
'lcd "J:\Work\SAS Data\Roman\Lists"' `
'put target.csv' `
'exit'
现在您可以更轻松地合并脚本参数:
param([string] $Path, [string] $FileName)
& 'C:\Program Files (x86)\WinSCP\WinSCP.exe' /console /log=log.txt /command `
'open ftp://user:pass@host -passive=on' `
"lcd `"$Path`"" `
"put `"$FileName`"" `
'exit'
但是,您当然可以,仍然编写命令文件并传递:
$script = Join-Path $Env:TEMP winscp-commands.txt
"open ftp://user:pass@host -passive=on
lcd ""$Path""
put ""$FileName""
exit" | Out-File -Encoding Default $script
& 'C:\Program Files (x86)\WinSCP\WinSCP.exe' /console /log=log.txt /script=$script
Remove-Item $script
我有一个 PowerShell 脚本
cd "C:\Program Files (x86)\WinSCP"
. .\WinSCP.exe /console /script="L:\Work\SAS Data\FTP\local2remote.txt" /log=log.txt
调用WinSCP命令文件
option batch on
open ftp://user:pass@host -passive=on
lcd "J:\Work\SAS Data\Roman\Lists"
put target.csv
exit
我想将 "J:\Work\SAS Data\Roman\Lists" 转换为 PowerShell 脚本中的参数,该参数可以在 txt 文件中传递。文件 target.csv 也是如此。任何帮助表示赞赏。
最简单的方法(不涉及编写临时脚本文件的方法)是为 WinSCP 切换到 /command
:
# You don't need the . operator to run external programs
.\WinSCP.exe /console /log=log.txt /command `
'open ftp://user:pass@host -passive=on' `
'lcd "J:\Work\SAS Data\Roman\Lists"' `
'put target.csv' `
'exit'
现在您可以更轻松地合并脚本参数:
param([string] $Path, [string] $FileName)
& 'C:\Program Files (x86)\WinSCP\WinSCP.exe' /console /log=log.txt /command `
'open ftp://user:pass@host -passive=on' `
"lcd `"$Path`"" `
"put `"$FileName`"" `
'exit'
但是,您当然可以,仍然编写命令文件并传递:
$script = Join-Path $Env:TEMP winscp-commands.txt
"open ftp://user:pass@host -passive=on
lcd ""$Path""
put ""$FileName""
exit" | Out-File -Encoding Default $script
& 'C:\Program Files (x86)\WinSCP\WinSCP.exe' /console /log=log.txt /script=$script
Remove-Item $script