Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 如何动态获取静态类属性的值?_Powershell - Fatal编程技术网

Powershell 如何动态获取静态类属性的值?

Powershell 如何动态获取静态类属性的值?,powershell,Powershell,我想循环一个静态类的属性。 [EnvDTE.Constants]| get member-static |其中对象{$\.MemberType-eq Property-和$\.Name-like'vsP*} 而不是手动输入以下名称: [环境常数]::vsProjectItemKindMisc 尝试: |选择对象{$\ 0.Value} |选择对象{$[EnvDTE.Constants]:$\udte.Name} |调用表达式[EnvDTE.Constants]:$\ux.Name 您给出的第一个

我想循环一个静态类的属性。 [EnvDTE.Constants]| get member-static |其中对象{$\.MemberType-eq Property-和$\.Name-like'vsP*}

而不是手动输入以下名称: [环境常数]::vsProjectItemKindMisc

尝试:

|选择对象{$\ 0.Value} |选择对象{$[EnvDTE.Constants]:$\udte.Name} |调用表达式[EnvDTE.Constants]:$\ux.Name
您给出的第一个示例是正确的,但似乎不适用于该名称空间。这两项工作:

[system.math] | Get-Member
[system.net.webrequest] | Get-Member

如果您有dll文件,您可以。

您给出的第一个示例是正确的,但似乎不适用于该名称空间。这两项工作:

[system.math] | Get-Member
[system.net.webrequest] | Get-Member

如果您有dll文件,您可以。

您可以选择.NET BCL路径:

[EnvDTE.Constants].UnderlyingSystemType.GetFields('Static,Public').Where({$_.Name -match 'vsP*'}).Foreach({$_.Name + " = " + $_.GetValue($null)})
或者可能更强大一点:

[EnvDTE.Constants].UnderlyingSystemType.GetFields('Static,Public') | 
    Where Name -match vsP* | Foreach {$_.Name + " = " + $_.GetValue($null)}
或:


您可以选择.NET BCL路线:

[EnvDTE.Constants].UnderlyingSystemType.GetFields('Static,Public').Where({$_.Name -match 'vsP*'}).Foreach({$_.Name + " = " + $_.GetValue($null)})
或者可能更强大一点:

[EnvDTE.Constants].UnderlyingSystemType.GetFields('Static,Public') | 
    Where Name -match vsP* | Foreach {$_.Name + " = " + $_.GetValue($null)}
或:


首先,这里的过滤器可能没有太大变化,但它的好习惯是:

[EnvDTE.Constants] | Get-Member -Static -MemberType Property -Name vsP*
您有一个MemberDefinition对象:


如果您在此处使用子表达式(尽管我建议您不要这样做),那么您的最后一次尝试将起作用。只有在真正必要时才应使用Invoke Expression。

首先,这里的过滤器可能没有太大变化,但它的好习惯是:

[EnvDTE.Constants] | Get-Member -Static -MemberType Property -Name vsP*
您有一个MemberDefinition对象:


如果您在那里使用子表达式(尽管我建议您不要这样做),那么您的最后一次尝试将起作用。只有在真正必要时才应使用Invoke Expression。

名称空间的工作方式与[System.math]| get member-static | where object{$|.MemberType-eq Property}相同似乎不起作用的是能够访问通过这种方式执行返回的值,而无需返回并键入名称。名称空间的工作原理与[System.math]| get member-static | where object{$|.MemberType-eq Property}相同似乎不起作用的是,在不返回并键入outTypo名称的情况下,能够访问通过这种方式执行它们返回的值:看看我使用int-Foreach对象块的时间-我在type name中遗漏了“v”。。。现在修复了。输入错误:看看我使用int Foreach对象块的时间-我在类型名称中遗漏了“v”。。。现在修好了。