Compartir vía


Set-Variable

Establece el valor de una variable. Crea la variable si no existe una con el nombre solicitado.

Sintaxis

Default (Es el valor predeterminado).

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

Description

El cmdlet Set-Variable asigna un valor a una variable especificada o cambia el valor actual. Si la variable no existe, el cmdlet lo crea.

Ejemplos

Ejemplo 1: Establecer una variable y obtener su valor

Estos comandos establecen el valor de la variable $desc en A descriptiony, a continuación, obtiene el valor de la variable.

Set-Variable -Name "desc" -Value "A description"
Get-Variable -Name "desc"
Name                           Value
----                           -----
desc                           A description

Ejemplo 2: Establecimiento de una variable global de solo lectura

En este ejemplo se crea una variable global de solo lectura que contiene todos los procesos del sistema y, a continuación, se muestran todas las propiedades de la variable.

Set-Variable -Name "processes" -Value (Get-Process) -Option Constant -Scope Global -Description "All processes" -PassThru |
    Format-List -Property *

El comando usa el cmdlet Set-Variable para crear la variable. Usa el parámetro PassThru para crear un objeto que represente la nueva variable y usa el operador de canalización (|) para pasar el objeto al cmdlet Format-List. Usa el parámetro property de Format-List con un valor de todos (*) para mostrar todas las propiedades de la variable recién creada.

El valor, (Get-Process), se incluye entre paréntesis para asegurarse de que se ejecuta antes de almacenarse en la variable. De lo contrario, la variable contiene las palabras Get-Process.

Ejemplo 3: Descripción de las variables públicas frente a privadas

En este ejemplo se muestra cómo cambiar la visibilidad de una variable a Private. Los scripts pueden leer y cambiar esta variable con los permisos necesarios, pero no es visible para el usuario.

New-Variable -Name "counter" -Visibility Public -Value 26
$Counter
26
Get-Variable c*
Name                  Value
----                  -----
Culture               en-US
ConsoleFileName
ConfirmPreference     High
CommandLineParameters {}
Counter               26
Set-Variable -Name "counter" -Visibility Private
Get-Variable c*
Name                  Value
----                  -----
Culture               en-US
ConsoleFileName
ConfirmPreference     High
CommandLineParameters {}
$counter
"Cannot access the variable '$counter' because it is a private variable"
.\use-counter.ps1
#Commands completed successfully.

Este comando muestra cómo cambiar la visibilidad de una variable a Private. Los scripts pueden leer y cambiar esta variable con los permisos necesarios, pero no es visible para el usuario.

Parámetros

-Confirm

Le pide confirmación antes de ejecutar el cmdlet.

Propiedades del parámetro

Tipo:SwitchParameter
Valor predeterminado:False
Admite caracteres comodín:False
DontShow:False
Alias:cf

Conjuntos de parámetros

(All)
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-Description

Especifica la descripción de la variable.

Propiedades del parámetro

Tipo:String
Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-Exclude

Especifica una matriz de elementos que este cmdlet excluye de la operación. El valor de este parámetro define el parámetro Path. Escriba un elemento de ruta o patrón, como *.txt. Se permiten los caracteres comodín.

Propiedades del parámetro

Tipo:

String[]

Valor predeterminado:None
Admite caracteres comodín:True
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-Force

Permite crear una variable con el mismo nombre que una variable de solo lectura existente o cambiar el valor de una variable de solo lectura.

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 de .

Propiedades del parámetro

Tipo:SwitchParameter
Valor predeterminado:False
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-Include

Especifica una matriz de elementos que este cmdlet incluye en la operación. El valor de este parámetro condiciona el parámetro Name. Escriba un nombre o patrón de nombre, como c*. Se permiten los caracteres comodín.

Propiedades del parámetro

Tipo:

String[]

Valor predeterminado:None
Admite caracteres comodín:True
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-Name

Especifica el nombre de la variable.

Propiedades del parámetro

Tipo:

String[]

Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:0
Mandatory:True
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:True
Valor de los argumentos restantes:False

-Option

Especifica el valor de Options propiedad de la variable.

Los valores válidos son:

  • None: no establece opciones. (None es el valor predeterminado).
  • ReadOnly: se puede eliminar. No se puede cambiar, excepto mediante el parámetro Force.
  • 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.
  • Private: la variable solo está disponible en el ámbito actual.
  • AllScope: la variable se copia en los nuevos ámbitos que se crean.

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.

Propiedades del parámetro

Tipo:ScopedItemOptions
Valor predeterminado:None
Valores aceptados:None, ReadOnly, Constant, Private, AllScope, Unspecified
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-PassThru

Devuelve un objeto que representa la nueva variable. De forma predeterminada, este cmdlet no genera ninguna salida.

Propiedades del parámetro

Tipo:SwitchParameter
Valor predeterminado:False
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-Scope

Especifica el ámbito de la variable. Los valores aceptables para este parámetro son:

  • Global
  • Local
  • Script
  • Private
  • Número relativo al ámbito actual (de 0 al número de ámbitos, donde 0 es el ámbito actual y 1 es su elemento primario).

Local es el valor predeterminado.

Para obtener más información, consulte about_Scopes.

Propiedades del parámetro

Tipo:String
Valor predeterminado:Local
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-Value

Especifica el valor de la variable.

Propiedades del parámetro

Tipo:Object
Valor predeterminado:None
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:1
Mandatory:False
Valor de la canalización:True
Valor de la canalización por nombre de propiedad:True
Valor de los argumentos restantes:False

-Visibility

Determina si la variable está 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 válidos son:

  • 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-Variable, o en las 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 usen una variable privada si los comandos se escribieron en la sesión en la que se definió la variable.

Propiedades del parámetro

Tipo:SessionStateEntryVisibility
Valor predeterminado:Public
Valores aceptados:Public, Private
Admite caracteres comodín:False
DontShow:False

Conjuntos de parámetros

(All)
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

-WhatIf

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

Propiedades del parámetro

Tipo:SwitchParameter
Valor predeterminado:False
Admite caracteres comodín:False
DontShow:False
Alias:Wi

Conjuntos de parámetros

(All)
Posición:Named
Mandatory:False
Valor de la canalización:False
Valor de la canalización por nombre de propiedad:False
Valor de los argumentos restantes:False

CommonParameters

Este cmdlet admite los parámetros comunes: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction y -WarningVariable. Para obtener más información, vea about_CommonParameters.

Entradas

Object

Puede canalizar un objeto que representa el valor de la variable a este cmdlet.

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 variable nueva o modificada.

Notas

PowerShell incluye los siguientes alias para Set-Variable:

  • Todas las plataformas:
    • set
    • sv