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{} e else{} são usadas para adicionar verificações adicionais e ações alternativas.
  • Os blocos elseif e else não são obrigatórios: é possível usar apenas if.

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:

everything about ifdocs.microsoft.com

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:

everything about switchdocs.microsoft.com

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:

everything about nulldocs.microsoft.com

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:

everything about pscustomobjectdocs.microsoft.com

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:

everything about shouldprocessdocs.microsoft.com

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:

  1. Execute o PowerShell ou PowerShell ISE como administrador.
  2. Execute o comando:
Set-ExecutionPolicy Unrestricted
  1. 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.