C# PowerShell:如何传递动态变量以获取计数器

C# PowerShell:如何传递动态变量以获取计数器,c#,.net,powershell,process,C#,.net,Powershell,Process,我试图通过PowerShell的Get Counter中的变量动态添加computerName、processName,但它抛出了一个错误。由于我是PowerShell的新手,我不知道如何使用它。你能帮我解决这个问题吗 下面是我正在尝试执行的代码 $compName = 'mycomputer' $processName = 'code' $url2='"\\'+$compName+'\process('+$processName+'#1)\id process" -ErrorAction S

我试图通过PowerShell的
Get Counter
中的变量动态添加computerName、processName,但它抛出了一个错误。由于我是PowerShell的新手,我不知道如何使用它。你能帮我解决这个问题吗

下面是我正在尝试执行的代码

$compName = 'mycomputer'
$processName = 'code'

$url2='"\\'+$compName+'\process('+$processName+'#1)\id process" -ErrorAction SilentlyContinue'
Get-Counter $url2
$url2
输出必须如下所示:

Get Counter'\\mycomputer\process(code#4)\id process'-ErrorAction SilentlyContinue
->以下是我希望通过动态url执行的操作

错误:


当您将单个字符串作为位置参数传递时,PowerShell将仅将其解释为一个参数

除此之外,您的“动态”参数将不起作用,因为它使用单引号,因此
$compName
$processName
变量将不会展开

或者:

$url2 = "\\$compName\process($processName#1)\id process"
Get-Counter $url2 -ErrorAction SilentlyContinue
或使用喷溅:

$GetCounterParams = @{
    Counter = "\\$compName\process($processName#1)\id process"
    ErrorAction = 'SilentlyContinue'
}
Get-Counter @GetCounterParams

当您将单个字符串作为位置参数传递时,PowerShell将仅将其解释为一个参数

除此之外,您的“动态”参数将不起作用,因为它使用单引号,因此
$compName
$processName
变量将不会展开

或者:

$url2 = "\\$compName\process($processName#1)\id process"
Get-Counter $url2 -ErrorAction SilentlyContinue
或使用喷溅:

$GetCounterParams = @{
    Counter = "\\$compName\process($processName#1)\id process"
    ErrorAction = 'SilentlyContinue'
}
Get-Counter @GetCounterParams

@Paxz添加了输出,请参见above@Paxz添加的输出请参见上文,但我无法在变量中获取其输出,例如:$output=get Counter@GetCounterParams不适用于meIs我们可以为其做些什么吗?请更详细地解释“不适用于我”的含义-您有任何错误吗?它挂着吗?
$output
之后是否包含任何内容?我希望此代码的输出包含在变量中。但下一行的变量为空。它在一段时间后执行。我想我需要一个回调或设置超时。由于我的主流是JS,我对PowerShell中的语法没有任何了解,或者我们可以将其封装在函数中?但我无法以变量形式获取其输出,例如:$output=get Counter@GetCounterParams不适用于meIs。我们可以为其做些什么吗?请更详细地解释“不适用于我”的含义-您有任何错误吗?它挂着吗?
$output
之后是否包含任何内容?我希望此代码的输出包含在变量中。但下一行的变量为空。它在一段时间后执行。我想我需要一个回调或设置超时。因为我的主流是JS,所以我对PowerShell中的语法一无所知,或者我们可以用函数来包装它?