2016-03-15 114 views
0

我想要做的是剝離Alis命令的輸出並從中獲取power-shell命令並運行該命令。如何從Alias中選擇powershell命令並運行該命令

我怎麼會在bash中做到這一點,我會削減輸入,並獲得第二列,然後將每行存儲在列表中。然後獲取以我想要的命令開頭的行,並使用正則表達式來獲取單獨的「 - >」,然後將結果放入字符串中並運行該命令。有點像這個

(如果別名工作在bash的是它在PowerShell中的相同)的別名CD的

輸出

CommandType Name     Version   Source 
----------- ----     -------   ------ 
Alias   cd -> Set-Location 

什麼我想要做的就是抓住該命令的設置地點並將其存儲到字符串中以便後者運行命令。這些字段不是製表符分隔的空格分隔符。

回答

1

我怎麼會在bash中做到這一點,我會切入輸入並獲得第二列,然後將每行存儲在列表中。然後得到與我想要的命令開始的行,並使用正則表達式來獲得seperateor「 - >」,然後把結果之後,在一個字符串

幸運的是,PowerShell命令發出的對象,而不是文本,因此提取這樣的信息要容易得多。

爲了得到一個別名的定義,通過get-alias選擇對象輸出definition屬性:

get-alias cd |select-object -expandproperty definition 

總之,隨時你開始思考「我會分析此cmdlet的文本輸出「在PowerShell中,你可能做錯了。相反,將cmdlet管道輸入Get-Member並查看懸掛輸出對象的屬性和方法。然後審問那些人。 PowerShell是基於對象的,而不是基於文本的。如果你一直生活在bash幾年/幾十年,這是一個調整,你作出。

+0

對於運行別名命令,您需要調用擴展屬性:&&(Get-Alias ...)。但是,我懷疑有很多別名,這實際上是有用的。 –

+0

謝謝我沒有想到要看它吐出來的物體。我只是用bash來強大的外殼對我來說有點奇怪。我通過使用文本來實現它,但這種方式更加優雅,更易於使用。 – Austinisftw