【问题标题】:What is the 'alias' keyword in PowerShell?PowerShell 中的“别名”关键字是什么?
【发布时间】:2014-01-11 03:20:41
【问题描述】:

好像不是别名。

get-alias alias 错误:此命令找不到匹配的别名,因为名为“alias”的别名不存在。

这不是命令

get-command alias 错误:术语“别名”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。

很可能aliasget-alias cmdlet 的别名,但它是在哪里定义的?

【问题讨论】:

    标签: powershell


    【解决方案1】:

    由于某种原因,您可以在 PowerShell 中从 get-xxxx cmdlet 中省略 get-,它会为您添加 get-

    例如,您可以输入hotfix 而不是get-hotfix

    【讨论】:

    • 或者您可以输入verb 以获得动词列表。
    • 这就是答案。但我仍然看到某些人的行为略有不同,例如 process vs get-processhelp vs get-help
    • process 是保留字,help 是内置函数(调用get-help)。这种行为(在 get- 之前)是引擎用来弄清楚发生了什么的最后一口气。 #Eris 有一些来自 trace-command cmdlet 的详细信息,它提供了更多详细信息。
    【解决方案2】:

    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 调用,以让人们发现命令的位置,在这种情况下是回退。
    • @Duncan .js 在 Windows 上无法执行,因此您不会得到它。如果它们是可执行的,那么您的反对意见是“小心要求 PS 按名称运行命令,因为它可能会找到该名称的命令并运行它”?在这种情况下,请小心依赖 get-alias 运行 cmdlet,因为您可能有一个名为 get-alias 的别名,它会执行其他操作并首先匹配。最好始终运行microsoft.powershell.utility\get-alias 以确保您得到您想要的。
    【解决方案3】:

    它是一个内置的提供者:http://technet.microsoft.com/en-us/library/hh847895.aspx

    您可以使用get-psdrive 获取驱动器列表,使用get-psprovider 获取提供者列表。

    【讨论】:

    • 这很有趣。不过,alias 仍有一些神秘之处。您可以使用dir alias:dir env:,但您也可以只使用简单的alias,而不能只使用简单的env,因此关键字alias 是特殊的。但它本身不是别名,也不是函数,那又是什么呢?
    • 我认为 Mike Shepard 的答案是正确的。有一个提供者为您提供同名驱动器这一事实与使用alias 作为get-alias 的缩写无关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    • 2014-11-29
    • 1970-01-01
    • 2022-12-05
    • 2015-03-16
    • 2011-08-19
    相关资源
    最近更新 更多