- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我似乎无法让 [Microsoft.Win32.RegistryValueKind]::TryParse
正常工作。我尝试的每个解决方案总是返回 Cannot find an overload for "TryParse"and the argument count: "2"。 (或“3”)
尽管它显示了以下内容。
PS C:\Windows\system32> [Microsoft.Win32.RegistryValueKind]::TryParse
OverloadDefinitions
-------------------
static bool TryParse[TEnum](string value, [ref] TEnum result)
static bool TryParse[TEnum](string value, bool ignoreCase, [ref] TEnum result)
根据我的经验,以下任何一项通常都可以正常工作。
[Microsoft.Win32.RegistryValueKind]::TryParse('dword',[ref]$Null)
[Microsoft.Win32.RegistryValueKind]::TryParse('dword',$true,[ref]$Null)
与此同时,我可以将字符串转换为 [Microsoft.Win32.RegistryValueKind]
但我很好奇我做错了什么。
最佳答案
TryParse
实际上是由System.Enum
实现的,是一个泛型方法。它返回一个bool
是否解析成功,第二个参数是一个out
,带有实际的解析结果。
如果您想使用 TryParse
,您会遇到很多问题。
首先,您不能在旧版本的 Powershell 中直接调用泛型方法。如果您使用的是 PS 7.3 或更高版本,那么您现在可以这样做:
[System.Enum]::TryParse[Microsoft.Win32.RegistryValueKind]('DWord', [ref]$prm)
对于使用 .Net Core 或 .Net 5 的 Powershell 版本(如果有的话我不知道),您还可以使用非通用版本的 TryParse
[System.Enum]::TryParse([Microsoft.Win32.RegistryValueKind], 'DWord', [ref]$prm)
尽管如此,在早期版本中您需要使用反射。
$arrParams = @('DWord', $null)
$method = ([System.Enum].GetMethods() | where {($_.Name -eq "TryParse") -and ($_.GetParameters().Length -eq 2) })[0].MakeGenericMethod(@([Microsoft.Win32.RegistryValueKind]))
$method.Invoke($null, $arrParams);
$arrParams[1]
注意字符串参数区分大小写,因此必须是'DWord'
关于.net - 如何使用 [Microsoft.Win32.RegistryValueKind]::TryParse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71364406/
我正在尝试在我的代码中使用这一行来编辑注册表中的值: dontAskOptions.SetValue("IDS_WARN_GENERAL_WINXP_EOL", 0xffffffff, Registr
我似乎无法让 [Microsoft.Win32.RegistryValueKind]::TryParse 正常工作。我尝试的每个解决方案总是返回 Cannot find an overload for
我是一名优秀的程序员,十分优秀!