Powershell armazenar variáveis ​​na variável não funciona

votos
0

Preciso de ajuda com o PowerShell, eu espero que alguém pode ajudar.

Eu quero armazenar múltiplas variáveis ​​em uma única variável.

Aqui está o meu código:

$Content = @
$Var1 = 1
$Var2 = 2
$Var3 = 3
@   

echo $Content

E isso é a minha saída:

echo $Content
 = 1
 = 2
 = 3

Deve olhar como este:

$Var1 = 1, etc...

Mas cada variável é removido. Eu não sei por quê. Alguém poderia explicar isso? Que eu preciso para armazená-los em algo como um objeto?

Desde já, obrigado!

Publicado 24/10/2019 em 12:00
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

A correção mais rápida para sua situação é mudar para um aqui-string entre aspas simples.

$Content = @'
$Var1 = "1"
$Var2 = "2"
$Var3 = "3"
'@ 

Em geral, aspas duplas em torno de uma seqüência de instruir PowerShell para interpolar. Aspas simples em torno de uma corda diz PowerShell para tratar o conteúdo como uma string literal. Isso também se aplica a cadeias de caracteres here ( @""@e @''@).

# Double Quotes

$string = "my string"
"$string"
my string

@"
$string
"@
my string

# Single Quotes

'$string'
$string

@'
$string
'@
$string

Quando interpolação acontece, as variáveis são expandidas e avaliados. A variável é identificado começando com o $personagem até um caractere ilegal para um nome de variável é lida. Observe no exemplo abaixo, como a interpolação variável pára na ..

"$string.length"
my string.length

Você pode usar caracteres de escape ou outros operadores de interpolação controle dentro de cordas duplas citadas. O operador subexpressão $()permite uma expressão a ser avaliada antes de ser convertida numa sequcia.

"$($string.length)"
9

O caractere de crase é o caractere de escape PowerShell. Ele pode ser usado para escapar $quando você não quer que ele seja tratado como uma variável.

"`$string"
$string

Citações de mistura pode criar certas armadilhas. Se você colocar a sua string com aspas simples, tudo dentro será uma string literal , independentemente do uso de caracteres de escape ou subexpressions.

'"$($string.length)"'
"$($string.length)"

'"`$string"'
"`$string"

Em torno de seu string com aspas duplas com dentro de aspas simples só vai tratar aspas simples do interior, literalmente, porque as cotações externas determinar como o texto será interpretado.

"'$string'"
'my string'

Usando vários pares de aspas simples ou duplas aspas duplas requer tratamento especial. Nesta situação única para as aspas duplas, você pode usar a crase fuga ou de dois "para imprimir uma única ".

"""$string"""
"my string"

"`"$string`""
"my string"

Para vários aspas simples, você deve usar dois 'porque um backtick será tratado literalmente e não dizer PowerShell para escapar nada.

'''$string'''
'$string'

Por favor, referência about_Quoting_Rules para documentação oficial.

Respondeu 24/10/2019 em 13:25
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more