Eu gostaria de declarar algumas constantes inteiras no PowerShell.
Existe alguma boa maneira de fazer isso?
powershell
constants
Tom Hazel
fonte
fonte
Set-Variable
? Ao lidar com variáveis, pode-se usar,[string]$name = value
mas isso parece não ser possível para constantes?Set-Variable test -option Constant -value [string]100
([string]100)
. Veja as respostas abaixo.Aqui está uma solução para definir uma constante como esta:
Solução retirada de http://poshcode.org/4063
fonte
Set-Constant
está contido em um módulo. Ele criará uma constante no escopo do módulo, ondeSet-Constant
está contido. Como alternativa, pode-se passar um parâmetro-Surround Global
, mas isso nem sempre é desejado. Gostaria de criar uma constante em outro módulo ou localmente em uma função.Use
-option Constant
com oSet-Variable
cmdlet:Agora
$myvar
tem um valor constante de 100 e não pode ser modificado.fonte
Set-Variable
? Ao lidar com variáveis, pode-se usar,[string]$name = value
mas isso parece não ser possível para constantes?set-variable -name test -value ([int64]100) -option Constant
Para usar um tipo específico de valor, digamos Int64, você pode converter explicitamente o valor usado em set-variable.
Por exemplo:
Checar,
E você verá que é um Int64 (em vez de Int32, o que seria normal para o valor 100).
fonte
Eu realmente gosto do açúcar sintático que a resposta de rob fornece:
Infelizmente, sua solução não funciona conforme o esperado quando você define a
Set-Constant
função em um módulo . Quando chamado de fora do módulo, ele criará uma constante no escopo do módulo, ondeSet-Constant
é definido, em vez do escopo do chamador . Isso torna a constante invisível para o chamador.A função modificada a seguir corrige esse problema. A solução é baseada nesta resposta à pergunta "Existe alguma maneira de um módulo PowerShell chegar ao escopo de seu chamador?" .
Notas:
Set-Variable -scope 1
deve funcionar), quando eu descobrir como fazer isso.-Mean
para-Value
, para consistência comSet-Variable
.Private
,ReadOnly
eAllScope
. Basta adicionar os valores desejados ao terceiro argumento doPSVariable
construtor , que é chamado no script acimaNew-Object
.fonte
PowerShell v5.0 deve permitir
[estático] [int] $ variável = 42
[estático] [DateTime] $ thisday
e similar.
fonte