首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Powershell Putty连接和自动化任务

Powershell Putty连接和自动化任务
EN

Stack Overflow用户
提问于 2015-06-29 14:18:02
回答 4查看 19.3K关注 0票数 2

我希望使用PowerShell连接到PuTTY“保存的会话”,然后指定包含一些批处理命令的文件。使用CMD,这看起来就像

代码语言:javascript
运行
复制
d:\putty\psftp 'Saved Session Name' -b d:\location.txt.

我认为PS的等价物应该看起来

代码语言:javascript
运行
复制
Start-Process d:\putty\psftp.exe 'Saved Session Name' 
(and then a call to pass a 'get' script) i.e. cd Outgoing get <date>.txt 

但是,我得到以下错误:

代码语言:javascript
运行
复制
a positional parameter cannot be found that accepts the argument

如何使用PowerShell完成这一任务?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-06-29 14:59:14

你不一定需要启动过程。

当您尝试从Powershell运行d:\putty\psftp.exe 'Saved Session Name' -b d:\location.txt时会发生什么?我做的第一件事就是尝试它,就像从命令行运行它一样。

最大的问题是如果您在路径名中有空格。您可能需要使用引号和调用操作符(符号):&"d:\putty\psftp.exe" 'Saved Session Name' -b "d:\location.txt"

如果确实需要使用Start-Process,可以这样做:

代码语言:javascript
运行
复制
Start-Process -FilePath "d:\putty\psftp.exe" `
    -ArgumentList "'Saved Session Name' -b d:\location.txt" -Wait

或者像这样:

代码语言:javascript
运行
复制
Start-Process -FilePath "d:\putty\psftp.exe" `
    -ArgumentList 'Saved Session Name', '-b', "d:\location.txt" -Wait

注意,第一个参数列表是一个包含每个参数的字符串,在第二个字符串中,每个参数都包含一个字符串。每件事都需要按照命令行中的顺序排列,这并不少见。通常,一种或另一种方法工作得更好,但这取决于您正在调用的应用程序。通常路径名中有引号和空格,因为您正在经历多个级别的转义,这取决于您调用的程序(注意到一个主题吗?)

我在上面的代码中添加了-Wait参数,因为默认情况下,启动进程不需要等待就会继续到下一行,因为它实际上产生了一个单独的进程。-Wait迫使Powershell,嗯,等等,这是人们通常希望在一个非交互式脚本。

有关呼叫运算符的帮助,请参阅Get-Help about_OperatorsGet-Help "call operator"获得更多主题。有关这方面的帮助,请参见Get-Help Start-Process

票数 1
EN

Stack Overflow用户

发布于 2020-06-01 21:36:09

你只需要plink

代码语言:javascript
运行
复制
plink 'Saved Session Name'
票数 3
EN

Stack Overflow用户

发布于 2015-06-29 17:33:52

添加以下Technet链接,其中包含在PowerShell中运行可执行文件的各种方式。

PowerShell:运行可执行文件

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31118062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档