Apêndice - Respostas a Perguntas de Revisão

Este apêndice fornece respostas concisas às perguntas de revisão encontradas no final de cada capítulo. Usa-o para validar a tua compreensão e reforçar conceitos-chave.

Capítulo 1 - Introdução ao PowerShell

  1. Usa a $PSVersionTable variável automática.
  2. Só quando precisas de contornar o Controlo de Conta de Utilizador (UAC) para tarefas que requerem elevação no computador local.
  3. A política de execução padrão nos sistemas clientes Windows é Restricted, que impede a execução de scripts.
  4. Use Get-ExecutionPolicy para determinar a política de execução atual.
  5. Use Set-ExecutionPolicy (por exemplo, Set-ExecutionPolicy -ExecutionPolicy RemoteSigned).

Capítulo 2 - O sistema de Ajuda

  1. Não. O parâmetro DisplayName de Get-Service é nomeado, não posicional.
  2. Get-Process tem seis conjuntos de parâmetros.
  3. Utilize Get-Command -Noun EventLog.
  4. Utilize Get-Process -Name powershell.
  5. Execute o Update-Help (elevado como administrador no Windows PowerShell) para descarregar e instalar o conteúdo de ajuda mais recente.

Capítulo 3 - Descobrindo objetos, propriedades e métodos

  1. Get-Process produz um System.Diagnostics.Process objeto.
  2. Canalize o comando para Get-Member.
  3. Verifique se o objeto tem um método que executa a ação.
  4. Use o parâmetro do comando PassThru, se houver.
  5. Execute o comando uma vez e armazene os resultados numa variável para evitar gerar repetidamente grandes quantidades de saída durante a prototipagem.

Capítulo 4 - One-Liners e o gasoduto

  1. Um one-liner PowerShell é um único pipeline contínuo, independentemente do número de linhas físicas que abrange.
  2. Quebras naturais de linha podem ocorrer em caracteres como a barra vertical (|), a vírgula (,), os colchetes ([ ]), as chavetas ({ }) e os parênteses (( )).
  3. Deves aplicar o filtro à esquerda para melhorar o desempenho e a eficiência, reduzindo a quantidade de dados que passam pelo pipeline.
  4. Um comando pode aceitar entrada de pipeline por valor (por tipo) ou pelo nome da propriedade.
  5. Como a maior parte do conteúdo na Galeria do PowerShell é contribuído pela comunidade e pode não ser avaliado, deve ser revisto e testado antes de ser utilizado.

Capítulo 5 - Formatação, aliases, fornecedores, comparação

  1. Porque os cmdlets de formatação produzem objetos de formatação, que interrompem o pipeline e não podem ser utilizados pela maioria dos outros comandos.
  2. Usa Get-Alias -Name % para determinar o verdadeiro cmdlet.
  3. Porque os pseudónimos reduzem a legibilidade e portabilidade, tornando os scripts mais difíceis de compreender para outros.
  4. Use Get-ChildItem -Path HKLM:\, HKCU:\ para listar chaves de registo em ambas as colmeias.
  5. O -replace operador é insensível a maiúsculas minúsculas por defeito, enquanto o .Replace() método é sensível a maiúsculas.

Capítulo 6 - Controlo do fluxo

  1. ForEach-Object Processa os itens um de cada vez do pipeline (streaming), enquanto a instrução foreach processa itens de uma coleção carregada na memória.
  2. Um ciclo avalia a sua condição antes de ser executado, pelo que pode nem sequer ser executado se a condição for falsa, ao contrário de while e do while, que executam do until pelo menos uma vez.
  3. break sai completamente do ciclo, enquanto continue salta a iteração atual e segue para a seguinte.

Capítulo 7 - Trabalhando com WMI

  1. Os cmdlets WMI (por exemplo, Get-WmiObject) são mais antigos e usam DCOM, enquanto os cmdlets CIM (por exemplo, Get-CimInstance) são mais recentes e usam WSMan por defeito.
  2. WSMan (Gestão Remota Windows).
  3. As sessões CIM permitem a reutilização de ligações, suportam credenciais alternativas, melhoram o desempenho e simplificam a gestão de múltiplas ligações remotas.
  4. Crie uma opção de sessão com New-CimSessionOption, por exemplo, para usar DCOM, e passe para New-CimSession, depois use essa sessão com Get-CimInstance.
  5. Utilize Remove-CimSession.

Capítulo 8 - Remotização do PowerShell

  1. Utilize Enable-PSRemoting.
  2. Utilize Enter-PSSession.
  3. Permite usar uma sessão persistente em vez de especificar o nome do computador e as credenciais em cada comando.
  4. Sim, pode usar uma sessão PowerShell (PSSession) num cenário de interatividade remota um a um.
  5. Os cmdlets executados localmente retornam objetos vivos com métodos, enquanto comandos remotos retornam objetos deserializados sem métodos.

Capítulo 9 - Funções

  1. Utilize Get-Verb.
  2. Adicione o [CmdletBinding()] atributo à função.
  3. Quando a função faz alterações ao estado do sistema ou executa ações potencialmente impactantes.
  4. Especifique -ErrorAction Stop.
  5. Para documentar como usar a função para que você e outros possam compreendê-la facilmente e aceder a ajuda com Get-Help.

Capítulo 10 - Módulos de script

  1. Cria um .psm1 ficheiro e coloca nele as tuas funções.
  2. Usar verbos aprovados garante consistência, evita avisos e melhora a descoberta.
  3. Utilize New-ModuleManifest.
  4. Use Export-ModuleMember no .psm1 ficheiro ou especifique funções no FunctionsToExport campo do .psd1 ficheiro.
  5. O módulo deve estar numa pasta com o mesmo nome do módulo, localizada num caminho listado em $env:PSModulePath, e conter o ficheiro do módulo apropriado (.psm1 ou manifesto).

Notas Finais

  • Estas respostas são intencionalmente concisas para reforçar conceitos-chave.
  • Revisite os capítulos para uma compreensão mais profunda.