Cómo convertir una cadena en un entero en PowerShell
-
Usa
[int]
para Convertir Cadenas a Enteros en PowerShell -
Usa
[System.Int32]
para Convertir Cadenas a Enteros en PowerShell - Define el Tipo de Dato de una Variable para Convertir Cadenas a Enteros en PowerShell
- Conclusión

En PowerShell, saber cómo convertir cadenas en enteros es una habilidad valiosa. Este tutorial te enseñará a convertir cadenas en enteros en PowerShell.
Veremos la técnica de usar [int]
y [System.Int32]
para realizar esta conversión, lo que te permitirá modificar tus datos fácilmente.
Usa [int]
para Convertir Cadenas a Enteros en PowerShell
En PowerShell, podemos usar [int]
para convertir una cadena en un entero. Esto se llama casting de tipo o conversión de tipo.
La siguiente sintaxis es una simple declaración de asignación en PowerShell, donde estamos convirtiendo una cadena en un entero y asignando el resultado a la variable $integerVariable
.
Sintaxis:
$integerVariable = [int]$stringVariable
Parámetros:
$integerVariable
: Esta es una variable que contendrá el valor entero después de la conversión.[int]
: Esto se usa para convertir el valor de$stringVariable
a un entero.$stringVariable
: Esta es otra variable o expresión que contiene una cadena que deseas convertir en un entero.
Consideremos que tenemos una variable $a
como se muestra a continuación.
$a = 123
El tipo de dato de $a
es un entero
.
$a.GetType().Name
Salida:
Int32
Pero cuando encerramos el valor con " "
, el tipo de dato se convertirá en cadena
.
$b = "123"
$b.GetType().Name
Salida:
String
Para convertir el tipo de dato de la cadena ($b = "123"
) a un entero, podemos usar [int]
como se muestra a continuación.
$b = $b -as [int]
$b.GetType().Name
En el código anterior, comenzamos con la variable $b
. El valor actual y el tipo de dato de $b
son desconocidos para nosotros en este momento, pero queremos asegurarnos de que se trate como un entero.
A continuación, el $b -as [int]
, usamos el operador -as
para un casting de tipo seguro. Intenta convertir el valor de $b
al tipo especificado [int]
.
Si se puede convertir, el resultado se asigna de nuevo a $b
. Si no, $b
permanece sin cambios.
En la siguiente línea, usamos $b.GetType().Name
para determinar el tipo de dato de la variable $b
después de la operación de casting de tipo.
Ahora, revisemos lo que sucede con una variable $b
teniendo un valor y tipo específico:
-
Si
$b
inicialmente contiene un entero (por ejemplo,$b = 42
), el código no cambiará su tipo y la salida seráInt32
. -
Si
$b
inicialmente contiene una cadena que puede convertirse exitosamente en un entero (por ejemplo,$b = "123"
), el código cambiará su tipo a un entero y la salida seráInt32
. -
Si
$b
inicialmente contiene una cadena que no puede convertirse en un entero (por ejemplo,$b = "hola"
), el código no cambiará su tipo y la salida será el tipo del valor original, que, en este caso, es una cadena, así que la salida seríaString
.
Salida:
Int32
Dada la salida Int32
, implica que el valor inicial de la variable $b
(antes de este fragmento de código) era un entero o una cadena que podría convertirse exitosamente en un entero.
Usa [System.Int32]
para Convertir Cadenas a Enteros en PowerShell
El [System.Int32]
es una forma de casting de tipo que convierte una cadena en un entero en PowerShell, que le dice explícitamente a PowerShell que trate una variable o expresión como un tipo de dato Int32
.
En la sintaxis, convertimos una cadena en $stringValue
a un entero, almacenando el resultado en $intValue
. Esto se hace usando la sintaxis [System.Int32]
para especificar el tipo de dato deseado, preparando $stringValue
para operaciones numéricas.
Sintaxis:
$intValue = [System.Int32]$stringValue
En el código, comenzamos estableciendo una variable de cadena llamada $stringValue
al valor "456"
. Luego, procedemos a convertir esta cadena en un entero usando [System.Int32]
y almacenar el resultado en otra variable, $intValue
.
Después de esta conversión, indagamos sobre el tipo de dato de la variable $intValue
usando $intValue.GetType().Name
.
Salida:
Int32
La salida nos dice que la variable $intValue
contiene un entero, específicamente un entero de 32 bits, como se indica por Int32
, que es el nombre del tipo de dato.
Define el Tipo de Dato de una Variable para Convertir Cadenas a Enteros en PowerShell
PowerShell puede detectar el tipo de dato de una variable por sí solo.
No necesitamos ser específicos sobre el tipo de dato y declarar una variable. Pero, podemos definir el tipo de dato de una variable antes de ella para obligar el tipo de dato.
Demos un ejemplo.
[int]$c = "456"
$c.GetType().Name
En el código anterior, declaramos la variable y la inicializamos así: [int]$c = "456"
. Esta línea le dice a PowerShell que convierta explícitamente la cadena "456"
en un entero, y el resultado se almacena posteriormente en la variable $c
.
A continuación, queremos saber el tipo de dato de la variable $c
, así que usamos $c.GetType().Name
. Esta es nuestra forma de comprobar si el casting de tipo fue exitoso.
Salida:
Int32
La salida anterior es Int32
, lo que indica que la cadena "456"
ha sido convertida en un entero. Pero, si intentas forzar un tipo de dato entero a un valor de cadena, obtendrás un error como en el siguiente ejemplo de código.
[int]$data = "storage"
$c.GetType().Name
En el código anterior, comenzamos declarando una variable llamada $data
y asignándole el valor de cadena "almacenamiento"
. La siguiente línea, [int]$data
, representa un intento de convertir forzosamente la cadena "almacenamiento"
a un tipo de dato entero.
Ahora, vamos a verificar el tipo de dato de la variable $data
usando $data.GetType().Name
.
Salida:
Cannot convert value "storage" to type "System.Int32". Error: "Input string was not in a correct format."
At line:1 char:1
+ [int]$data = "storage"
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : MetadataError: (:) [], ArgumentTransformationMetadataException
+ FullyQualifiedErrorId : RuntimeException
Intentamos convertirla como un entero usando [int]
. Sin embargo, dado que la cadena "almacenamiento"
no puede convertirse en un entero, PowerShell no cambia el tipo de la variable y devuelve un mensaje de error "La cadena de entrada no estaba en un formato correcto."
.
Conclusión
En este artículo, hemos aprendido a convertir cadenas en enteros usando [int]
y [System.Int32]
. Ahora, podemos pasar fácilmente de texto a números en PowerShell.
Al controlar los tipos de variables, obtienes precisión y versatilidad en tus scripts.