Set-Variable

Define o valor de uma variável. Cria a variável se uma com o nome solicitado não existir.

Syntax

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

Description

O Set-Variable cmdlet atribui um valor a uma variável especificada ou altera o valor atual. Se a variável não existir, o cmdlet a criará.

Exemplos

Exemplo 1: Definir uma variável e obter seu valor

Esses comandos definem o $desc valor da variável como A description, e obtém o valor da variável.

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

Name                           Value
----                           -----
desc                           A description

Exemplo 2: Definir uma variável global somente leitura

Este exemplo cria uma variável global, somente leitura, que contém todos os processos no sistema e, em seguida, exibe todas as propriedades da variável.

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

O comando usa o Set-Variable cmdlet para criar a variável. Ele usa o parâmetro PassThru para criar um objeto que representa a nova variável e usa o operador de pipeline (|) para passar o objeto para o Format-List cmdlet. Ele usa o parâmetro Property de Format-List com um valor de all (*) para exibir todas as propriedades da variável recém-criada.

O valor, (Get-Process), é colocado entre parênteses para garantir que ele seja executado antes de ser armazenado na variável. Caso contrário, a variável conterá as palavras Get-Process.

Exemplo 3: Compreender variáveis públicas versus privadas

Este exemplo mostra como alterar a visibilidade de uma variável para Private. Essa variável pode ser lida e alterada por scripts com as permissões necessárias, mas não fica visível para o usuário.

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 mostra como alterar a visibilidade de uma variável para Private. Essa variável pode ser lida e alterada por scripts com as permissões necessárias, mas não fica visível para o usuário.

Parâmetros

-Confirm

Solicita sua confirmação antes de executar o cmdlet.

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

-Description

Especifica a descrição da variável.

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

-Exclude

Especifica uma matriz de itens que esse cmdlet exclui da operação. O valor desse parâmetro qualifica o parâmetro Path . Insira um elemento ou padrão de caminho, como *.txt. Caracteres curinga são permitidos.

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

-Force

Permite que você crie uma variável com o mesmo nome de uma variável somente leitura existente, ou altere o valor de uma variável somente leitura.

Por padrão, você pode substituir uma variável, a menos que a variável tenha um valor de opção de ReadOnly ou Constant. Para obter mais informações, consulte o parâmetro Option .

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

-Include

Especifica uma matriz de itens que esse cmdlet inclui na operação. O valor desse parâmetro qualifica o parâmetro Name . Insira um nome ou padrão de nome, como c*. Caracteres curinga são permitidos.

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

-Name

Especifica o nome da variável.

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

-Option

Especifica o valor da propriedade Options da variável.

Os valores válidos são:

  • None: Não define opções. None( é o padrão.)
  • ReadOnly: Pode ser excluído. Não pode ser alterado, exceto usando o parâmetro Force.
  • Constant: Não pode ser excluído ou alterado. Constant é válido somente quando você está criando uma variável. Não é possível alterar as opções de uma variável existente para Constant.
  • Private: A variável está disponível somente no escopo atual.
  • AllScope: A variável é copiada para quaisquer novos escopos criados.

Esses valores são definidos como uma enumeração baseada em sinalizador. Você pode combinar vários valores juntos para definir vários sinalizadores usando esse parâmetro. Os valores podem ser passados para o parâmetro Option como uma matriz de valores ou como uma cadeia de caracteres separada por vírgulas desses valores. O cmdlet combinará os valores usando uma operação binary-OR. Passar valores como uma matriz é a opção mais simples e também permite que você use a conclusão de tabulação nos valores.

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

Retorna um objeto que representa a nova variável. Por padrão, este cmdlet não gera saída.

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

-Scope

Especifica o escopo da variável. Os valores aceitáveis para esse parâmetro são:

  • Global
  • Local
  • Script
  • Private
  • Um número relativo ao escopo atual (0 até o número de escopos, onde 0 é o escopo atual e 1 é seu pai).

Local é o padrão.

Para obter mais informações, consulte about_Scopes.

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

-Value

Especifica o valor da variável.

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

-Visibility

Determina se a variável é visível fora da sessão na qual ela foi criada. Esse parâmetro é voltado para uso em scripts e comandos que serão entregues a outros usuários.

Os valores válidos são:

  • Public: A variável é visível. Public( é o padrão.)
  • Private: A variável não está visível.

Quando uma variável é privada, ela não aparece em listas de variáveis, como as retornadas por Get-Variable, ou em exibições da unidade Variable: . Comandos para ler ou alterar o valor de uma variável privada retornam um erro. No entanto, o usuário pode executar comandos que usam uma variável privada se os comandos tiverem sido escritos na sessão em que a variável foi definida.

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

-WhatIf

Mostra o que aconteceria se o cmdlet fosse executado. O cmdlet não é executado.

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

Entradas

Object

Você pode canalizar um objeto que representa o valor da variável para esse cmdlet.

Saídas

None

Por padrão, esse cmdlet não retorna nenhuma saída.

PSVariable

Quando você usa o parâmetro PassThru , esse cmdlet retorna um objeto PSVariable que representa a variável nova ou alterada.

Observações

O Windows PowerShell inclui os seguintes aliases para Set-Variable:

  • set
  • sv