【发布时间】:2014-01-11 03:20:41
【问题描述】:
好像不是别名。
get-alias alias 错误:此命令找不到匹配的别名,因为名为“alias”的别名不存在。
这不是命令
get-command alias 错误:术语“别名”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。
很可能alias 是get-alias cmdlet 的别名,但它是在哪里定义的?
【问题讨论】:
标签: powershell
好像不是别名。
get-alias alias 错误:此命令找不到匹配的别名,因为名为“alias”的别名不存在。
这不是命令
get-command alias 错误:术语“别名”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。
很可能alias 是get-alias cmdlet 的别名,但它是在哪里定义的?
【问题讨论】:
标签: powershell
由于某种原因,您可以在 PowerShell 中从 get-xxxx cmdlet 中省略 get-,它会为您添加 get-。
例如,您可以输入hotfix 而不是get-hotfix
【讨论】:
verb 以获得动词列表。
process vs get-process 或 help vs get-help
alias 被解析为Get-Alias,我是这样发现的:
> Trace-Command -Expression { alias } -Name CommandDiscovery -PSHost
DEBUG: CommandDiscovery Information: 0 : Looking up command: alias
<A rather large number of lines deleted, showing exactly where it's looking>
DEBUG: CommandDiscovery Information: 0 : Looking for alias in C:\bin\sysinternals
DEBUG: CommandDiscovery Information: 0 : The command [alias] was not found, trying again with get- prepended
DEBUG: CommandDiscovery Information: 0 : Looking up command: get-alias
DEBUG: CommandDiscovery Information: 0 : Cmdlet found: Get-Alias Microsoft.PowerShell.Commands.GetAliasCommand
<actual output of get-alias>
【讨论】:
$env:PATH 的每个目录中找到alias 的16 个变体,因此虽然它节省了在Get-Alias 上输入的4 个字符依赖这种行为是有风险的,因为您很容易获得错误文件,例如 alias.js 优先。
Trace-Command 调用,以让人们发现命令的位置,在这种情况下是回退。
.js 在 Windows 上无法执行,因此您不会得到它。如果它们是可执行的,那么您的反对意见是“小心要求 PS 按名称运行命令,因为它可能会找到该名称的命令并运行它”?在这种情况下,请小心依赖 get-alias 运行 cmdlet,因为您可能有一个名为 get-alias 的别名,它会执行其他操作并首先匹配。最好始终运行microsoft.powershell.utility\get-alias 以确保您得到您想要的。
它是一个内置的提供者:http://technet.microsoft.com/en-us/library/hh847895.aspx
您可以使用get-psdrive 获取驱动器列表,使用get-psprovider 获取提供者列表。
【讨论】:
alias 仍有一些神秘之处。您可以使用dir alias: 或dir env:,但您也可以只使用简单的alias,而不能只使用简单的env,因此关键字alias 是特殊的。但它本身不是别名,也不是函数,那又是什么呢?
alias 作为get-alias 的缩写无关。