PowerCLI 有一个隐藏的 vc 别名,我不知道它来自哪里以及是否有更多类似的别名
PowerCLI has an hidden vc alias, I can't figure where it comes from and whether there's more of its like
几年前,我在 VMware PowerCLI 中偶然发现了一个 "hidden" PowerShell 别名 vc
,可以用来代替 Connect-ViServer
。
这个 vc
命令对 Get-Command
和 Get-Alias
都是不可见的,它不能被命令完成识别(不是你真的需要它),我只能将它与 Connect-ViServer
根据其输出和行为。
我发现这个特定的伪别名在我的 PowerCLI 工作中非常有用,我一直想知道它是如何工作的,以及是否还有其他这样的隐藏快捷方式。
今天,我在我的系统中搜索了 Get-Command 未知的 2 个字母和 3 个字母的命令,唯一出现在 vc
旁边的是缩短的 Get-* 命令(如下面的@vrdse 所解释的)。
- 谁能解释一下 where/how 这个
vc
伪别名是如何定义的?
- 我怎样才能比使用下面的脚本或靠运气更有效地找到类似的隐藏命令?
这是我的 3 字母别名的(快速而肮脏的)脚本,运行 在我的系统上运行了大约一个小时(!),除了缩短的 Get-* 命令外什么也没发现:
(注意:不推荐像我那样盲目地 运行 运行dom 命令)
$az = [char[]]('a'[0]..'z'[0])
foreach ($i in $az) {
write $i
foreach ($j in $az) {
write $i$j
foreach ($k in $az) {
if (!(gcm -ea ig $i$j$k)) {
try {iex $i$j$k; write-warning $i$j$k} catch {}
}
}
}
}
理论上,这应该可行。我不知道为什么它不显示像 "dir" 这样的常见别名(是的,它们在引擎 https://github.com/PowerShell/PowerShell/issues/8970 中定义):
get-module -ListAvailable | select name,exportedaliases
哦,Powershell,你是如此多变和神秘。 ExportedAliases 好像用处不大。
gcm get-vc
CommandType Name Version Source
----------- ---- ------- ------
Alias Get-VC 11.5.0.... VMware.VimAutomation.Core
get-module VMware.VimAutomation.Core | select name, exportedaliases
Name ExportedAliases
---- ---------------
VMware.VimAutomation.Core {}
好像别名是在模块文件中导出的,耸耸肩。 VMware.VimAutomation.Core.psd1,第 46 行。
PS C:\Users\js\Documents\WindowsPowerShell\Modules> ls -r * | select-string get-vc
VMware.VimAutomation.Core.5.0.14899560\net45\VMware.VimAutomation.Core.ps1:145:set-alias Get-VC Connect-VIServer
-Scope Global
VMware.VimAutomation.Core.5.0.14899560\netcoreapp2.0\VMware.VimAutomation.Core.ps1:145:set-alias Get-VC
Connect-VIServer -Scope Global
VMware.VimAutomation.Core.5.0.14899560\VMware.VimAutomation.Core.psd1:46:AliasesToExport = @('Answer-VMQuestion','Ap
ply-DrsRecommendation','Apply-VMHostProfile','Export-VM','Get-ESX','Get-PowerCLIDocumentation','Get-VC','Get-VIServer',
'Get-VIToolkitConfiguration','Get-VIToolkitVersion','Set-VIToolkitConfiguration','Shutdown-VMGuest')
我是这样理解的。
Get-Command -Module VMware.VimAutomation.Core -CommandType Alias
CommandType Name Version Source
----------- ---- ------- ------
Alias Answer-VMQuestion 11.5.0.14899560 VMware.VimAutomation.Core
Alias Apply-DrsRecommendation 11.5.0.14899560 VMware.VimAutomation.Core
Alias Apply-VMHostProfile 11.5.0.14899560 VMware.VimAutomation.Core
Alias Export-VM 11.5.0.14899560 VMware.VimAutomation.Core
Alias Get-ESX 11.5.0.14899560 VMware.VimAutomation.Core
Alias Get-PowerCLIDocumentation 11.5.0.14899560 VMware.VimAutomation.Core
Alias Get-VC 11.5.0.14899560 VMware.VimAutomation.Core
Alias Get-VIServer 11.5.0.14899560 VMware.VimAutomation.Core
Alias Get-VIToolkitConfiguration 11.5.0.14899560 VMware.VimAutomation.Core
Alias Get-VIToolkitVersion 11.5.0.14899560 VMware.VimAutomation.Core
Alias Set-VIToolkitConfiguration 11.5.0.14899560 VMware.VimAutomation.Core
Alias Shutdown-VMGuest 11.5.0.14899560 VMware.VimAutomation.Core
或
alias | ? source -match vmware
正如我在评论中所述,PowerShell 不需要 Get-
或 Get-*
命令,例如 Get-Vhd
。相反,您可以只键入 Vhd
。也就是说,您可以检查 Connect-ViServer
.
的别名
Get-Alias -Definition Connect-ViServer
----------- ----
Alias Get-ESX
Alias Get-VC
Alias Get-VIServer
你看,实际上它有一些别名。其中之一是Get-VC
,因此vc
是可能的。
几年前,我在 VMware PowerCLI 中偶然发现了一个 "hidden" PowerShell 别名 vc
,可以用来代替 Connect-ViServer
。
这个 vc
命令对 Get-Command
和 Get-Alias
都是不可见的,它不能被命令完成识别(不是你真的需要它),我只能将它与 Connect-ViServer
根据其输出和行为。
我发现这个特定的伪别名在我的 PowerCLI 工作中非常有用,我一直想知道它是如何工作的,以及是否还有其他这样的隐藏快捷方式。
今天,我在我的系统中搜索了 Get-Command 未知的 2 个字母和 3 个字母的命令,唯一出现在 vc
旁边的是缩短的 Get-* 命令(如下面的@vrdse 所解释的)。
- 谁能解释一下 where/how 这个
vc
伪别名是如何定义的? - 我怎样才能比使用下面的脚本或靠运气更有效地找到类似的隐藏命令?
这是我的 3 字母别名的(快速而肮脏的)脚本,运行 在我的系统上运行了大约一个小时(!),除了缩短的 Get-* 命令外什么也没发现:
(注意:不推荐像我那样盲目地 运行 运行dom 命令)
$az = [char[]]('a'[0]..'z'[0])
foreach ($i in $az) {
write $i
foreach ($j in $az) {
write $i$j
foreach ($k in $az) {
if (!(gcm -ea ig $i$j$k)) {
try {iex $i$j$k; write-warning $i$j$k} catch {}
}
}
}
}
理论上,这应该可行。我不知道为什么它不显示像 "dir" 这样的常见别名(是的,它们在引擎 https://github.com/PowerShell/PowerShell/issues/8970 中定义):
get-module -ListAvailable | select name,exportedaliases
哦,Powershell,你是如此多变和神秘。 ExportedAliases 好像用处不大。
gcm get-vc
CommandType Name Version Source
----------- ---- ------- ------
Alias Get-VC 11.5.0.... VMware.VimAutomation.Core
get-module VMware.VimAutomation.Core | select name, exportedaliases
Name ExportedAliases
---- ---------------
VMware.VimAutomation.Core {}
好像别名是在模块文件中导出的,耸耸肩。 VMware.VimAutomation.Core.psd1,第 46 行。
PS C:\Users\js\Documents\WindowsPowerShell\Modules> ls -r * | select-string get-vc
VMware.VimAutomation.Core.5.0.14899560\net45\VMware.VimAutomation.Core.ps1:145:set-alias Get-VC Connect-VIServer
-Scope Global
VMware.VimAutomation.Core.5.0.14899560\netcoreapp2.0\VMware.VimAutomation.Core.ps1:145:set-alias Get-VC
Connect-VIServer -Scope Global
VMware.VimAutomation.Core.5.0.14899560\VMware.VimAutomation.Core.psd1:46:AliasesToExport = @('Answer-VMQuestion','Ap
ply-DrsRecommendation','Apply-VMHostProfile','Export-VM','Get-ESX','Get-PowerCLIDocumentation','Get-VC','Get-VIServer',
'Get-VIToolkitConfiguration','Get-VIToolkitVersion','Set-VIToolkitConfiguration','Shutdown-VMGuest')
我是这样理解的。
Get-Command -Module VMware.VimAutomation.Core -CommandType Alias
CommandType Name Version Source
----------- ---- ------- ------
Alias Answer-VMQuestion 11.5.0.14899560 VMware.VimAutomation.Core
Alias Apply-DrsRecommendation 11.5.0.14899560 VMware.VimAutomation.Core
Alias Apply-VMHostProfile 11.5.0.14899560 VMware.VimAutomation.Core
Alias Export-VM 11.5.0.14899560 VMware.VimAutomation.Core
Alias Get-ESX 11.5.0.14899560 VMware.VimAutomation.Core
Alias Get-PowerCLIDocumentation 11.5.0.14899560 VMware.VimAutomation.Core
Alias Get-VC 11.5.0.14899560 VMware.VimAutomation.Core
Alias Get-VIServer 11.5.0.14899560 VMware.VimAutomation.Core
Alias Get-VIToolkitConfiguration 11.5.0.14899560 VMware.VimAutomation.Core
Alias Get-VIToolkitVersion 11.5.0.14899560 VMware.VimAutomation.Core
Alias Set-VIToolkitConfiguration 11.5.0.14899560 VMware.VimAutomation.Core
Alias Shutdown-VMGuest 11.5.0.14899560 VMware.VimAutomation.Core
或
alias | ? source -match vmware
正如我在评论中所述,PowerShell 不需要 Get-
或 Get-*
命令,例如 Get-Vhd
。相反,您可以只键入 Vhd
。也就是说,您可以检查 Connect-ViServer
.
Get-Alias -Definition Connect-ViServer
----------- ----
Alias Get-ESX
Alias Get-VC
Alias Get-VIServer
你看,实际上它有一些别名。其中之一是Get-VC
,因此vc
是可能的。