2015-04-29 43 views
3

我期待的Windows 7等同的「尾巴」命令的,並認爲我有這個PowerShell的等價發現 -PowerShell的等價物的「尾巴」命令幾乎遠程工作

C:\>powershell -command "& {Get-Content file.txt | Select-Object -last 100}" 

如果我用這個在我自己的Windows 7 PC上的CMD提示符下,返回信息就好了。我甚至可以輸入/附加到另一個文件。

但是,當我通過openSSH遠程登錄到另一臺PC時,該命令有效,但它永遠不會讓我回到命令提示符 - 在向我顯示文件的最後100行之後掛起。這意味着這不適用於我想爲300個遠程Windows 7 PC編輯的批處理文件。

任何想法?

+2

PowerShell的哪個版本? 3或更高版本可以這樣做:Get-Content file.txt --Tail 100 – JGreenwell

+0

2.0(不幸)。但即使如此,我不確定是否會讓我回到C:\>提示符。 – BigRedEO

+1

請勿使用'cmd.exe'並運行'powershell -command ...'。運行PowerShell而不是'cmd.exe',並直接在PowerShell中使用'Get-Content' cmdlet。 –

回答

0

由於您運行的命令爲-command "...",根據docs,您需要指定-noexit標誌來阻止運行該命令後PowerShell退出。

powershell -command "& {Get-Content file.txt | Select-Object -last 100}" -noexit 

當你將它添加到你可能需要-noprofile和-nonInteractive以及批處理文件 - 儘管對於遠程命令,您可能要生成一個進程以更好地控制和錯誤處理。此外,如果這不起作用,問題可能與OpenSSH如何處理(在遠程連接的測試服務器上爲我工作)

+0

謝謝 - 我嘗試了幾種不同的方式,但沒有人會讓我回到我的命令提示符,所以我猜這是OpenSSH。 – BigRedEO

+0

@BigRedEO你可能會檢查出[在.NET搭配的SSH(http://www.powershelladmin.com/wiki/SSH_from_PowerShell_using_the_SSH.NET_library)有時運行簡單的命令或只是多個單時更正使用PowerShell 2.0 SSH問題命令幷包含2.0 SCP命令的解決方法。 – JGreenwell

2

嘗試了許多不同的建議,發現遍佈在線,最後找到一個工作!

答案是在批處理文件本身。我的批處理文件來調用這個PowerShell的行只是這樣的:

Powershell.exe -noprofile -executionpolicy Bypass C:\log\Tail.ps1 
    :end 

同樣,如果你使用它,你希望它運行/獲取信息非常PC上的偉大工程。但不是遙遠的。終於找到你只需要添加「< NUL」您在批處理文件調用Powershell的結束,就這樣

Powershell.exe -noprofile -executionpolicy Bypass C:\log\Tail.ps1 <nul 
    :end 

對方是什麼人寫的是什麼最後是有意義的:「我的研究已經顯示PowerShell運行通過-File開關指示的腳本中的命令,然後等待來自標準輸入的額外PowerShell命令(我對-Command開關的簡短實驗表現出類似的行爲)通過將標準輸入重定向到nul,一次PowerShell完成執行腳本並從標準輸入讀取「文件結束」,PowerShell退出。「

這裏找到在這個頁面 - Powershell script gets stuck, doesn't exit when called from batch file 所以信貸實際上去@Gordon史密斯