Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

327
Vistas
Cómo utilizar [Microsoft.Win32.RegistryValueKind]::TryParse

Parece que no puedo hacer que [Microsoft.Win32.RegistryValueKind]::TryParse funcione correctamente. Cada solución que intento siempre devuelve Cannot find an overload for "TryParse" and the argument count: "2". (or "3") a pesar de que muestra lo siguiente.

 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)

En mi experiencia, cualquiera de los siguientes normalmente debería funcionar bien.

 [Microsoft.Win32.RegistryValueKind]::TryParse('dword',[ref]$Null) [Microsoft.Win32.RegistryValueKind]::TryParse('dword',$true,[ref]$Null)

Mientras tanto, puedo convertir la cadena como [Microsoft.Win32.RegistryValueKind] pero tengo curiosidad por saber qué estoy haciendo mal.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

El método [Microsoft.Win32.RegistryValueKind]::TryParse() por sí solo devolverá $true o $false , dependiendo de si el análisis se realizó correctamente o no.

  • El primer parámetro es el valor de cadena que desea analizar convertido a uno de los tipos de enumeración RegistryValueKind .
  • El último parámetro es la variable que contiene el tipo de elección RegistryValueKind.
    Luego, el método intenta convertir el valor de cadena dado a ese tipo de registro.
  • Opcionalmente, hay una sobrecarga con un segundo parámetro en el medio que puede establecer en $true para que funcione sin distinción entre mayúsculas y minúsculas en el valor de cadena dado.

ejemplo:

 [Microsoft.Win32.RegistryValueKind]::TryParse('12345', [ref][Microsoft.Win32.RegistryValueKind]::DWord)

devuelve True porque '12345' se puede convertir en un tipo de valor DWord entero.

También puede leer el valor analizado de esta manera

 $result = [Microsoft.Win32.RegistryValueKind]::DWord # 4 if ([Microsoft.Win32.RegistryValueKind]::TryParse('12345', [ref]$result)) { Write-Host "The value can be stored as $result (DWord)" }

De todos modos, si su intención es leer los valores del registro y tratar de determinar si el RegistryKind de esa entrada es correcto, creo que el método RegistryKey.GetValueKind() sería más fácil de usar.

over 4 years ago · Santiago Trujillo Denunciar

0

TryParse en realidad está implementado por System.Enum y es un método genérico. Devuelve un bool si el análisis tuvo éxito, y el segundo parámetro es una out con el resultado real del análisis.

Tiene una serie de problemas si desea utilizar TryParse .

En primer lugar, no puede llamar a un método genérico directamente en Powershell a menos que esté usando PS 7.3 o superior

 [System.Enum]::TryParse<Microsoft.Win32.RegistryValueKind>('DWord', [ref]$prm)

Para las versiones de Powershell que usan .Net Core o .Net 5 (no sé si hay alguno), también puede usar la versión no genérica de TryParse

 [System.Enum]::TryParse([Microsoft.Win32.RegistryValueKind], 'DWord', [ref]$prm)

Sea como fuere, en versiones anteriores es necesario utilizar la reflexión.

 $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]

Tenga en cuenta que el parámetro de cadena distingue entre mayúsculas y minúsculas y, por lo tanto, debe ser 'DWord'

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda