Powershell v3实例化类

我尝试了两种方法在Powershell v3中实例化一个类:

$regex = New-Object -Type System.Text.RegularExpressions.Regex -ArgumentList '\/\/.*' | Get-Member
$regex::Replace("//hey", "")

和:

$netregex = [regex]::new('\/\/.*') | Get-Member
$nosingleline = $netregex::Replace("//hey", '')

第一种方式产生这个:

无法将类型为'System.Object []'的对象强制转换为'System.Type' . 在行:2 char:1 $ regex :: Replace(“//嘿嘿”,“”)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CategoryInfo:OperationStopped:(:) [],InvalidCastException FullyQualifiedErrorId:System.InvalidCastException

第二种方式产生了这个:

方法调用失败,因为[System.Text.RegularExpressions.Regex]不包含名为“new”的方法 . 在行:4 char:1 $ netregex = [regex] :: new('//.*')| Get-Member ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CategoryInfo:InvalidOperation:(:) [],RuntimeException FullyQualifiedErrorId:MethodNotFound

回答(1)

2 years ago

从两个命令中删除 | Get-Member . 它正在改变在这些线上输出的最终对象类型 .

还可以使用 . 来访问该方法:

$netregex = [regex]::new('\/\/.*')
$nosingleline = $netregex.Replace("//hey", '')

$regex = New-Object -Type System.Text.RegularExpressions.Regex -ArgumentList '\/\/.*'
$regex.Replace("//hey", "")