New-Variable

Crea una nueva variable.

Syntax

New-Variable
   [-Name] <String>
   [[-Value] <Object>]
   [-Description <String>]
   [-Option <ScopedItemOptions>]
   [-Visibility <SessionStateEntryVisibility>]
   [-Force]
   [-PassThru]
   [-Scope <String>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

Description

El New-Variable cmdlet crea una nueva variable en PowerShell. Puede asignar un valor a la variable al crearla o asignar o cambiar el valor después de crearla.

Puede usar los parámetros de New-Variable para establecer las propiedades de la variable, establecer el ámbito de una variable y determinar si las variables son públicas o privadas.

Normalmente, se crea una nueva variable escribiendo el nombre de la variable y su valor, como $Var = 3, pero puede usar el New-Variable cmdlet para usar sus parámetros.

Ejemplos

Ejemplo 1: Creación de una variable

New-Variable days

Este comando crea una nueva variable denominada days. No es necesario escribir el parámetro Name .

Ejemplo 2: Crear una variable y asignarle un valor

New-Variable -Name "zipcode" -Value 98033

Este comando crea una variable denominada zipcode y la asigna al valor 98033.

Ejemplo 3: Crear una variable con la opción ReadOnly

PS C:\> New-Variable -Name Max -Value 256 -Option ReadOnly
PS C:\> New-Variable -Name max -Value 1024

New-Variable : A variable with name 'max' already exists.
At line:1 char:1
+ New-Variable -Name max -Value 1024
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ResourceExists: (max:String) [New-Variable], SessionStateException
    + FullyQualifiedErrorId : VariableAlreadyExists,Microsoft.PowerShell.Commands.NewVariableCommand

PS C:\> New-Variable -Name max -Value 1024 -Force

En este ejemplo se muestra cómo usar la ReadOnly opción de New-Variable para proteger una variable de que se sobrescriba.

El primer comando crea una nueva variable denominada Max y establece su valor en 256. Usa el parámetro Option con un valor de ReadOnly.

El segundo comando intenta crear una segunda variable con el mismo nombre. Este comando devuelve un error porque la opción de solo lectura se establece en la variable.

El tercer comando usa el parámetro Force para invalidar la protección de solo lectura en la variable. En este caso, el comando para crear una nueva variable con el mismo nombre se realiza correctamente.

Ejemplo 4: Asignación de varias opciones a una variable

New-Variable -Name 'TestVariable' -Value 'Test Value' -Option AllScope,Constant

En este ejemplo se crea una variable y se asignan las AllScope opciones y Constant , por lo que la variable estará disponible en el ámbito actual y los nuevos ámbitos creados y no se pueden cambiar ni eliminar.

Ejemplo 5: Creación de una variable privada

Este comando muestra el comportamiento de una variable privada en un módulo. El módulo contiene el Get-Counter cmdlet , que tiene una variable privada denominada Counter. El comando usa el parámetro Visibility con un valor de Private para crear la variable.

PS C:\> New-Variable -Name counter -Visibility Private

#Effect of private variable in a module.

PS C:\> Get-Variable c*

Name                           Value
----                           -----
Culture                        en-US
ConsoleFileName
ConfirmPreference              High
CommandLineParameters          {}

PS C:\> $counter
"Cannot access the variable '$counter' because it is a private variable"
At line:1 char:1
+ $counter
+ ~~~~~~~~
    + CategoryInfo          : PermissionDenied: (counter:String) [], SessionStateException
    + FullyQualifiedErrorId : VariableIsPrivate

PS C:\> Get-Counter
Name         Value
----         -----
Counter1     3.1415
...

El resultado del ejemplo muestra el comportamiento de una variable privada. El usuario que ha cargado el módulo no puede ver ni cambiar el valor de la variable Counter, pero los comandos del módulo pueden leer y cambiar esa variable.

Ejemplo 6: Creación de una variable con un espacio

En este ejemplo se muestra que se pueden crear variables con espacios. Se puede acceder a las variables mediante el Get-Variable cmdlet o directamente delimitando una variable con llaves.

PS C:\> New-Variable -Name 'with space' -Value 'abc123xyz'

PS C:\> Get-Variable -Name 'with space'

Name                           Value
----                           -----
with space                     abc123xyz

PS C:\> ${with space}
abc123xyz

Parámetros

-Confirm

Le solicita su confirmación antes de ejecutar el cmdlet.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Description

Especifica una descripción de la variable.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

Indica que el cmdlet crea una variable con el mismo nombre que una variable de solo lectura existente.

De forma predeterminada, puede sobrescribir una variable a menos que la variable tenga un valor de opción de ReadOnly o Constant. Para obtener más información, consulte el parámetro Option .

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

Escriba un nombre para la nueva variable.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Option

Especifica el valor de la propiedad Options de la variable. Los valores permitidos para este parámetro son los siguientes:

  • None : no establece ninguna opción. None es el valor predeterminado.
  • ReadOnly - Se puede eliminar. No se puede cambiar, excepto mediante el parámetro Force .
  • Private : la variable solo está disponible en el ámbito actual.
  • AllScope : la variable se copia en todos los ámbitos nuevos que se crean.
  • Constant - No se puede eliminar ni cambiar. Constant solo es válido cuando se crea una variable. No se pueden cambiar las opciones de una variable existente a Constant.

Estos valores se definen como una enumeración basada en marcas. Puede combinar varios valores para establecer varias marcas mediante este parámetro. Los valores se pueden pasar al parámetro Option como una matriz de valores o como una cadena separada por comas de esos valores. El cmdlet combinará los valores mediante una operación binary-OR. Pasar valores como una matriz es la opción más sencilla y también permite usar la finalización de tabulación en los valores.

Para ver la propiedad Options de todas las variables de la sesión, escriba Get-Variable | Format-Table -Property name, options -AutoSize.

Type:ScopedItemOptions
Accepted values:None, ReadOnly, Constant, Private, AllScope, Unspecified
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PassThru

Devuelve un objeto que representa el elemento con el que está trabajando. De forma predeterminada, este cmdlet no genera ningún resultado.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Scope

Especifica el ámbito de la nueva variable. Los valores permitidos para este parámetro son los siguientes:

  • Global - Las variables creadas en el ámbito global son accesibles en todas partes en un proceso de PowerShell.
  • Local - El ámbito local hace referencia al ámbito actual, puede ser cualquier ámbito en función del contexto. Local es el ámbito predeterminado cuando no se especifica el parámetro de ámbito.
  • Script - Las variables creadas en el ámbito del script solo son accesibles dentro del archivo de script o módulo en el que se crean.
  • Número relativo al ámbito actual (de 0 al número de ámbitos, donde 0 es el ámbito actual, 1 es su elemento primario, 2 el elemento primario del ámbito primario, etc.). No se pueden usar números negativos.

Nota:

El parámetro también acepta el valor de Private. Private no es realmente un ámbito, sino una configuración opcional para una variable. Sin embargo, el uso del Private valor con este cmdlet no cambia la visibilidad de la variable. Para obtener más información, consulte about_Scopes.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Value

Especifica el valor inicial de la variable.

Type:Object
Position:1
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Visibility

Determina si la variable es visible fuera de la sesión en la que se creó. Este parámetro está diseñado para su uso en scripts y comandos que se entregarán a otros usuarios. Los valores permitidos para este parámetro son los siguientes:

  • Public - La variable está visible. Public es el valor predeterminado.
  • Private - La variable no está visible.

Cuando una variable es privada, no aparece en listas de variables, como las devueltas por Get-Variableo en pantallas de la Variable: unidad. Los comandos para leer o cambiar el valor de una variable privada devuelven un error. Sin embargo, el usuario puede ejecutar comandos que usan una variable privada si se escribieron en la sesión en la que se definió la variable.

Type:SessionStateEntryVisibility
Accepted values:Public, Private
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Muestra lo que sucedería si se ejecutara el cmdlet. El cmdlet no se ejecuta.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Entradas

Object

Puede canalizar cualquier objeto a New-Variable.

Salidas

None

De forma predeterminada, este cmdlet no devuelve ninguna salida.

PSVariable

Cuando se usa el parámetro PassThru , este cmdlet devuelve un objeto PSVariable que representa la nueva variable.

Notas

PowerShell incluye los siguientes alias para New-Variable:

  • Todas las plataformas:
    • nv