我知道这可以用来查看函数的内容:
cat function:\mkdir
这很好,所以我想使用bat
语法突出显示该输出
PS C:\> bat function:\mkdir
function:\mkdir: No such file or directory
我想这可能有用:
PS C:\> bat $(function:\mkdir)
function:\mkdir : The term 'function:\mkdir' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try
again.
At line:1 char:7
+ bat $(function:\mkdir)
+ ~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (function:\mkdir:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
这也会失败:
cat function:\mkdir | bat
我做错了什么;我如何用我选择的解析器输出函数内容?
对于某些上下文,这是针对我的函数的,该函数尽可能多地告诉我有关任何cmdlet、函数、别名、模块、外部脚本、应用程序或变量的信息,只需将what
指向任何对象,它就会告诉您有关该对象的信息(例如what mkdir
或what what
等)。如果路径上有bat
,它会使用该路径并将输出着色为PowerShell,如果路径上没有bat
,它会使用Get-Content
。https://gist.github.com/roysubs/20c1bc888383d56df67008f4ba4179cb
1条答案
按热度按时间c3frrgcw1#
使用 * 命名空间变量表示法 *:
注意事项:
-
,请将整个识别项括在{...}
中,例如${function:Get-Foo}
。cat
是Get-Content
的内置别名。相比之下,在 * 类Unix * 平台上的PowerShell中,cat
是指标准Unix实用程序(/bin/cat
)。简而言之:
$function:mkdir
相当于Get-Content function:mkdir
[scriptblock]
示例,当您将它传递给一个 * 外部程序 * 时,它被隐式地 * 字符串化 *,例如您的例子中的bat
。{ ... }
的情况下,不包括{
和}
)。Get-Content
: