![](/img/trans.png)
[英]How to load Silverlight in IE8 when automating tasks with PowerShell?
[英]Powershell Putty Connection and Automating Tasks
我想使用 PowerShell 連接到 PuTTY“保存的會話”,然后指定一個包含一些批處理命令的文件。 使用 CMD 這看起來像
d:\putty\psftp 'Saved Session Name' -b d:\location.txt.
我認為 PS 等價物應該看起來像
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
但是,我收到以下錯誤:
a positional parameter cannot be found that accepts the argument
如何使用 PowerShell 完成此操作?
所有你需要的是plink
:
plink 'Saved Session Name'
您不一定需要 Start-Process。
當您嘗試從 Powershell 運行d:\\putty\\psftp.exe 'Saved Session Name' -bd:\\location.txt
時會發生什么? 我做的第一件事就是像從命令行運行它一樣嘗試它。
最大的問題是路徑名中是否有空格。 您可能需要使用引號和調用運算符( &"d:\\putty\\psftp.exe" 'Saved Session Name' -b "d:\\location.txt"
): &"d:\\putty\\psftp.exe" 'Saved Session Name' -b "d:\\location.txt"
。
如果你確實需要使用 Start-Process,你可以這樣做:
Start-Process -FilePath "d:\putty\psftp.exe" `
-ArgumentList "'Saved Session Name' -b d:\location.txt" -Wait
或者像這樣:
Start-Process -FilePath "d:\putty\psftp.exe" `
-ArgumentList 'Saved Session Name', '-b', "d:\location.txt" -Wait
請注意,第一個中的參數列表是包含每個參數的單個字符串,而在第二個中它是一個字符串數組,每個參數一個字符串。 一切都需要與它們在命令行上的順序相同,並且有點不穩定的情況並不少見。 通常一種方法或另一種方法效果更好,但這取決於您調用的應用程序。 通常在路徑名中使用引號和空格,因為根據您正在調用的程序(注意到主題?),您正在經歷多個級別的轉義。
我在上面的代碼中添加了-Wait
參數,因為默認情況下,Start-Process 會繼續下一行而不等待,因為它實際上產生了一個單獨的進程。 -Wait
強制 Powershell 等待,這是人們在非交互式腳本中通常想要的。
有關Get-Help "call operator"
的更多主題,請參閱Get-Help about_Operators
或Get-Help "call operator"
。 有關這方面Get-Help Start-Process
請參閱Get-Help Start-Process
。
添加以下 Technet Wiki 鏈接,其中包含在 PowerShell 中運行可執行文件的各種方法。
嘗試這個:
$Path = "d:\putty\psftp.exe"
$Prm1 = 'Saved Session Name'
$Prm2 = "-b"
$Prm3 = "d:\location.txt"
&$Path $Prm1 $Prm2 $Prm3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.