Adicional#
Estruturas Lógicas#
if, elseif, else#
No PowerShell, os operadores condicionais permitem que o programa tome decisões e execute diferentes blocos de código com base em condições.
- A estrutura
if() {}verifica a condição entre parênteses e executa o bloco de código se a condição for verdadeira. - As palavras-chave
elseif{}eelse{}são usadas para adicionar verificações adicionais e ações alternativas. - Os blocos
elseifeelsenão são obrigatórios: é possível usar apenasif.
Exemplo:
if ($number -gt 10) {
Write-Output "Número maior que 10"
} elseif ($number -eq 10) {
Write-Output "Número igual a 10"
} else {
Write-Output "Número menor que 10"
}
Se a condição em if for verdadeira, os subsequentes elseif e else são ignorados.
É possível usar vários elseif em sequência para verificar várias opções.
O bloco else é executado quando todas as condições anteriores são falsas.
Mais informações podem ser encontradas no link:
switch#
O switch é uma construção conveniente para verificar uma variável em vários valores e escolher o bloco de código correspondente.
switch ($variable) {
0 { Write-Output "Valor igual a 0" }
1 { Write-Output "Valor igual a 1" }
2 { Write-Output "Valor igual a 2" }
default { Write-Output "Valor não corresponde a nenhuma das condições" }
}
- Para cada valor, um bloco de código é listado, que será executado se o valor da variável corresponder.
- O bloco
defaulté opcional e é executado se nenhum dos valores corresponder. - O
switché útil para múltiplas opções de escolha, reduzindo construções if aninhadas.
Mais informações podem ser encontradas no link:
Verificação de $null#
No PowerShell, para verificar a igualdade com $null, é recomendável sempre colocar $null à esquerda na expressão:
$null -eq $value
Isso se deve às particularidades do tratamento de valores no PowerShell, para evitar erros inesperados caso $value não esteja definido.
Em expressões lógicas do PowerShell, é possível usar cmdlets e funções que serão avaliados como valores booleanos com base em sua lógica de verdade/falsidade. Por exemplo, a condição:
if ($null_object) {
$False
} else {
$True
}
Considerará $null_object como uma condição falsa (se estiver vazio ou $null) e executará o bloco correspondente.
Também é possível atribuir valores a variáveis diretamente dentro da condição, o que é conveniente para atribuição e verificação simultâneas de $null. Por exemplo:
if ($var = (function)) {
$True
} else {
$False
}
Aqui, a variável $var recebe o resultado da função e é imediatamente verificado se não é $null (ou vazio).
De forma semelhante, a verificação da variável em relação a si mesma:
if ($var = $var) {
$True
} else {
$False
}
Mais informações podem ser encontradas no link:
Strings de Substituição#
No PowerShell, existem várias maneiras de formar e concatenar strings.
Aspas#
As variáveis podem ser inseridas diretamente nas strings com diferentes tipos de aspas:
$string = "’objeto’"
$string1 = "vendido"
"Teste’ $string com sucesso”” $string1” # Resultado: Teste’ ‘objeto’ com sucesso” vendido
'Teste” '+$string+' com sucesso’’ '+$string1 # Resultado: Teste” ‘objeto’ com sucesso’ vendido
HereString#
É possível usar HereString para declarar uma string multilinha mantendo a formatação:
@"
Teste+@’ $string com sucesso” $string1
"@
O resultado será estritamente correspondente ao que está contido dentro.
F-strings#
Também existem F-strings para formatação de strings com parâmetros:
("Teste {0} com sucesso {1}" -f $string, $string1)
PSCustomObject#
PSCustomObject é um objeto PowerShell que armazena dados de forma semelhante a uma tabela hash, mas pode ser manipulado como um objeto, acessando os campos através de ponto.
Isso permite estruturar dados de forma conveniente, criar objetos com propriedades necessárias e realizar operações.
Mais informações sobre PSCustomObject podem ser encontradas no link:
Credenciais#
No PowerShell, existem mecanismos especiais para trabalhar com credenciais de forma segura, incluindo funções e parâmetros embutidos, bem como construções que garantem a notificação do usuário sobre alterações e permitem gerenciar o processo de execução (por exemplo, ShouldProcess).
Mais informações sobre ShouldProcess podem ser encontradas no link:
Erro ao executar arquivos ps1#
O erro ao executar arquivos .ps1 no PowerShell está relacionado à política de execução de scripts, que por padrão proíbe a execução de quaisquer scripts para proteger o sistema contra código malicioso.
A mensagem de erro é a seguinte:
«Não é possível carregar o arquivo ... .ps1, pois a execução de scripts está desativada neste sistema».
A razão é que o Windows utiliza a Execution Policy — um conjunto de regras que define quais scripts podem ser executados. Por padrão, a política é Restricted, que bloqueia scripts.
Para verificar a política atual, use o comando:
Get-ExecutionPolicy
Para permitir a execução de scripts:
- Execute o PowerShell ou PowerShell ISE como administrador.
- Execute o comando:
Set-ExecutionPolicy Unrestricted
- Confirme a alteração pressionando "Sim" (Yes).
Isso permitirá a execução de scripts com a extensão .ps1 sem restrições.
Para um controle mais rigoroso, é possível escolher outros níveis de política, como RemoteSigned ou AllSigned.