在大多数情况下,对功能参数的期望是[wmiclass]
。但是,我正在使用带有自定义类的自定义名称空间。当我使用Get-Member
时,其类型显示为:
System.Management.ManagementClass#ROOT\namespace\class_name
如何将WMI类指定为变量类型?此示例不起作用:
param(
[wmiclass#root\namespace\class_name]
$Class
)
这将返回
Unable to find type [System.Management.ManagementClass#ROOT\namespace\class_name].
出于这个问题的目的,假设我要定位
ROOT\cimv2\Win32_Service
标记c#
,因为它与切向相关,我很好奇这是否可以解决
答案 0 :(得分:1)
你能做到吗?
param(
[PsTypeName("System.Management.ManagementClass#ROOT\namespace\class_name")]
$Class
)
测试案例:
function test {
param([psTypename("System.Management.ManagementClass#ROOT\cimv2\StdRegProv")]$mine)
$mine
}
$reg = [wmiclass]"\\.\root\cimv2:StdRegprov"
$reg | gm
TypeName: System.Management.ManagementClass#ROOT\cimv2\StdRegProv
[wmiclass]$wmi = ""
$wmi | gm
TypeName: System.Management.ManagementClass#\
test $wmi
test : Cannot bind argument to parameter 'mine', because PSTypeNames of the argument do not match the PSTypeName
required by the parameter: System.Management.ManagementClass#ROOT\cimv2\StdRegProv.
At line:1 char:6
+ test $wmi
+ ~~~~
+ CategoryInfo : InvalidArgument: (:) [test], ParameterBindingArgumentTransformationException
+ FullyQualifiedErrorId : MismatchedPSTypeName,test
test $reg
NameSpace: ROOT\cimv2
Name Methods Properties
---- ------- ----------
StdRegProv {CreateKey, Delet... {}
PowerShell V2测试:
function testv2 {
param([ValidateScript({($_ | Get-Member)[0].typename -eq 'System.Management.ManagementClass#ROOT\cimv2\StdRegProv'})]$mine)
$mine
}
testv2 $reg
NameSpace: ROOT\cimv2
Name Methods Properties
---- ------- ----------
StdRegProv {CreateKey, Delet... {}
testv2 $wmi
testv2 : Cannot validate argument on parameter 'mine'. The "($_ | gm)[0].typename -eq 'System.Management.ManagementClas
s#ROOT\cimv2\StdRegProv'" validation script for the argument with value "" did not return true. Determine why the valid
ation script failed and then try the command again.
At line:1 char:7
+ testv2 <<<< $wmi
+ CategoryInfo : InvalidData: (:) [testv2], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,testv2