2016-03-15 159 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