gpt4 book ai didi

powershell - 如何在WinSCP命令中执行的PowerShell脚本中传递参数?

转载 作者:行者123 更新时间:2023-12-03 00:47:32 25 4
gpt4 key购买 nike

我有一个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 - 如何在WinSCP命令中执行的PowerShell脚本中传递参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40628335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com