scripts

PowerShell Windows

Muitas tarefas podem ser agilizadas via linha de comando tanto no Windows quanto no Linux. Nesta matéria vamos falar do Windows PowerShell e alguns comandos úteis para usuários domésticos e empresariais. Para a maioria dos comandos de diagnóstico e manutenção é necessário abrir o PowerShell como administrador.

PowerShell Windows

O Windows PowerShell é uma linguagem de script e shell de linha de comando baseada em tarefa projetada especialmente para administração do sistema. Criado no .NET Framework, o Windows PowerShell ajuda profissionais de TI e usuários de energia a controlar e automatizar a administração do sistema operacional Windows e aplicativos executados no Windows.

Antes de mais nada, vamos inserir aqui um adendo. Comandos podem ser simples e executados um a um, ou podemos inseri-los em sequência, numa única linha de forma a obter um resultado lógico que depende da resposta do comando anterior.

Para isso, podemos usar pipes “|”, & ou &&. Por exemplo: Você pode iniciar um processo e interrompê-lo.

Get-Process “notepad” | Stop-Process

No PowerShell, podemos obter um resultado semelhante usando `&&` firstcommand; secondcommand. A diferença é que, nesse caso, o segundo comando será executado “mesmo que o primeiro falhe”. Portanto, por exemplo, no PowerShell você pode usar o encadeamento de comandos:

Get-Process "notepad"; start "https://www.aeetec.com.br"

Neste caso, ainda executamos a primeira tarefa, que é obter o processo do bloco de notas, mas também queremos abrir um site. Se possível, faz muito sentido usar pipelines do PowerShell. No entanto, se você quiser executar vários comandos não relacionados na mesma linha, pode usar o firstcommand; secondcommand método `execute`. Nesse caso, o segundo comando é executado mesmo que o primeiro falhe.

Uma das novas funcionalidades do PowerShell 7 são os operadores && e ||, que permitem encadear pipelines com base em condições. Esses operadores são conhecidos no  PowerShell como operadores de encadeamento de pipelines . Seu funcionamento é bastante simples: o operador && executará o pipeline à direita se o pipeline à esquerda for bem-sucedido e o ||operador || executará o pipeline à direita se o pipeline à esquerda falhar.

Get-Process "notepad" && start "https://www.aeetec.com.br"

Se o processo do Bloco de Notas estivesse em execução, ele abriria o site. Se o Bloco de Notas não estivesse em execução, este comando simplesmente retornaria um erro informando que o processo “Bloco de Notas” não foi encontrado.

Get-Process "notepad" || Start-Process notepad

Com esse comando, verificaríamos se o processo do Bloco de Notas está em execução. Se estiver em execução, o segundo comando não será executado. Se o processo do Bloco de Notas não estiver em execução, o segundo comando será executado, iniciando o processo do Bloco de Notas.

Este trecho do texto é baseado no original em inglês de https://www.thomasmaurer.ch/

Script para remover certificados vencidos de usuários

Script para remover certificados do tipo A1 instalados no perfil de usuários e que estejam vencidos.

Para usuários comuns, com computadores que “não fazem parte de uma rede com Domínio do Active Directory” o script pode ser executado diretamente.

Também é possível ao administrador da rede com AD remover “remotamente” os certificados vencidos de computadores na rede, adicionando o script na pasta netlogon do servidor e chamando ele com com este comando:

Invoke-Command -ComputerName “NomeDoComputador” -FilePath “\\server\NETLOGON\RemoveCerts.ps1”

Ou na máquina cliente:

powershell -ExecutionPolicy Bypass -File \\server\NETLOGON\RemoveCerts.ps1

Isto pode ser usado, por exemplo, em pequenos escritórios de contabilidade e contabilistas autônomos, que usam vários certificados de clientes instalados em seus computadores.

Caso o script abra no bloco de notas, pode clicar com o botão direito do mouse e escolher “abrir com…” e depois a opção: “Escolher outro aplicativo”. Em outro momento adicionarei as GPO’s para associar o arquivo .ps1 ao executável do PowerShell.

Normalmente “não aparece” o Windows PowerShell na lista de programas e então role a janela até a opção “escolha um aplicativo no seu PC”.

Navegue até a pasta C:\Windows\System32\WindowsPowerShell\v1.0 e localize o executável powershell.exe. Depois de localizar o executável clique no botão Sempre. Desta forma o Windows memoriza a opção e cria a associação de arquivos .ps1 ao PowerShell.


# Script para remover certificados expirados do usuário atual
# Pode ser usado em GPO (Logon Script)
#
#Na GPO: User Configuration > Windows Settings > Scripts (Logon/Logoff)
#
# powershell.exe -ExecutionPolicy Bypass -File "\\SERVIDOR\NETLOGON\Remove-Certs.ps1"
#

# Acessa o repositório Pessoal do usuário
$store = New-Object System.Security.Cryptography.X509Certificates.X509Store("My","CurrentUser")
$store.Open("ReadWrite")

# Lista os certificados expirados
$expiredCerts = $store.Certificates | Where-Object { $_.NotAfter -lt (Get-Date) }

foreach ($cert in $expiredCerts) {
    Write-Output "Removendo certificado expirado: $($cert.Subject) - Expirado em: $($cert.NotAfter)"
    $store.Remove($cert)
}

$store.Close()

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *