本文介绍了带破折号的参考命令名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我最近发现 Powershell 函数只是命名的脚本块.例如

I've recently discovered that Powershell functions are just named scriptblocks. For example

function HelloWorld {
    Write-Output "Hello world"
}

$hw = $function:HelloWorld

& $hw

将执行 HelloWorld 方法.

Will execute the HelloWorld method.

然而,我无法弄清楚的是如何获得对名称中带有破折号的方法的引用:

However, what I have not been able to figure out, is how to get a reference to a method that has a dash in it's name:

function Hello-World {
    Write-Output "Hello world"
}

$hw = $function:Hello-World

You must provide a value expression on the right-hand side of the '-' operator.
At line:1 char:27
+     $hw = $function:Hello- <<<< World
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : ExpectedValueExpression

有什么想法吗?

我知道我可以这样做:

$hw = (Get-Item function:Hello-World).ScriptBlock

但它有点嘈杂",我喜欢 $function 语法

But it's a bit "noisy" and I like the $function syntax

推荐答案

Doh!我应该坚持 程序员问题解决序列 并在我发布到 SO 之前询问我的同事.看起来我应该使用:

Doh! I shoulda stuck with the Programmer Problem Solving Sequence and asked my co-workers before I posted to SO. Looks like I should use:

$hw = ${function:Hello-World}

这篇关于带破折号的参考命令名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-26 07:16