Powershell
Comandos Básicos
Essencial
Acessado o powershell via prompt de comando.
powershellVersão do Powershell
$PSVersionTableVerificando versão disponíveis do Powershell no máquina atual
$PSVersionTable.PSVersionVerificando qual linguagem do Powershell está em uso no momento, sendo eles ConstrainedLanguage ou FullLanguage.
$ExecutionContext.SessionState.LanguageModeListando as variáveis de ambiente
dir env:Renomeando o título da janela
$host.UI.RawUI.WindowTitle = "<NOME>"Modos de exibição
# Modo Lista, onde apresentar resultados mais completos
ls | Format-List
ls | fl
# Modo Tabela, que vem por padrão na saída dos resultados
ls | Format-Table
ls | ft
# Exibe m popup GUI com melhor visualização
ls | Out-GridViewQuando executarmos algum comando e recebermos algum retorno que contenha algo como {valor1, valor2, valor3, val...}, não temos como saber o restante dos valores. Para vermos a lista completa, precismos utilizar o seguinte comando:
Exibindo todos os alias
Comando para saber quais serviços estão presentes no SO e quais os seus executáveis
Informações sobre partições do disco
Acessado o powershell via prompt de comando sem entrar no modo interativo
Verificando se o SO é 64 bits
Detalhes do SO
Lista completa de comandos disponíveis
Buscando todos os Process do tipo Cmdlet
Executando comandos através do PowerShell
Buscamos por algum comando
Exibindo mensagem na tela
Diretório atual
Lendo arquivos
Lista os processos em execução
Procurando por um processo que começe com Calc e executando um kill para finalizá-lo
Buscando o path completo de determinado executável
Alterando User Agent em requisições web
Configurando Proxy em requisições web
Para verificar as configurações atuais de Proxy, basta digitar:
Windows Defender
Vendo logs do que o Defender bloqueou
Get-Help
Semelhante ao comando man do Linux, temos o Get-Help no Powershell, que serve como um manual para os comandos disponíveis
Podemos utilizar argumentos adicionais no nosso helper, como por exemplo:
Properties
Vendo as propriedades de um comando (objeto). No exemplo abaixo, utilizamos o Get-Process (ps) como exemplo, mas podemos utilizar outros comando em seu lugar. Note que o Get-Member possui o alias gm.
Como tudo no Powershell é um objeto, uma simples string pode conter Method e Property. No exemplo abaixo, estamos dando um echo em abc (lembrando que não precisamos escrever echo) e pegando as suas informações de acesso.
Filtrando somente por Member-Type que possua o valor Method
Acessando as propriedades
Ao vermos um tipo de Property ao executar o Get-Member, devemos especificar o formato, como por exemplo, o Format-List (ou fl`) para poder acessar suas propriedades
Manipulando Saídas
Abaixo alguns métodos que podemos acessar com uma string:
Select
Select-String
Procurando pela string "pass" em todos os arquivos txt
Array
Removendo valores duplicados no array
Exibe todos os valores do array menos o primeiro
Exibe todos os valores do array menos os 3 primeiros
Modules
Verificando todos os Módulos que estão importados na sessão atual
Verificando todos os Módulos que estão dispóníveis para serem importados
Para importar um Módulos presente no resultado do comando acima, basta executar:
Caso seja um módulo baixado da internet ou até mesmo desenvolvido por conta própria, execute:
Também podemos importar Módulos, usando a técnica Dot-Sourcing, que consiste na seguinte estrutura
Outra maneira diferente de fazer um importar um módulo:
Localizando o diretório do Módulos. Caso coloque scripts nesses diretórios, eles serão carregados automaticamente no Powershell, permitindo serem executados de forma nativa
Listando todos os cmdlet de um determinado Módulo
Caso tenha queira executar alguma function no resultado do comando acima e não sabe ao certo como utilizar, execute o comando abaixo para ter mais detalhes sobre o seu uso
Foreach
Multiplando por 2, cada um dos itens
Matando todos os processos do Chrome, semelhante a um ps -Name Chrome | kill
Where-Object
Executando comandos e realizando filtros. Note que a ? pode ser substituída por Where-Object
Por exemplo, para pegarmos todos os serviços que estão em execução, podemos executar o seguinte comando:
Bypass Para Copiar Arquivos
Profile
Os Profiles são perfis, onde scripts são executados assim que o Powershell for inicializado. Para executarmos um comando sem um perfil, podemos utilizar um comando seguindo o exemplo abaixo:
Redes
Exibindo detalhes sobre as unidade de rede que estão mapeadas
Verificando conectividade
Verificando portas com Test-NetConnection.
Verificando portas com Net.Sockets.TcpClient.
Converte um arquivo com hostname em IP's
IPv4NetworkScan.ps1
Lendo, Filtrando, Pesquisando e Manipulando Saídas
Filtrando palavras de forma semelhante ao grep (Linux)
Quebrando string em partes
Substituindo caracteres
Listando todos os arquivos de forma recursiva
Contando quantidade de resultados (linhas), semelhante ao wc -l do Linux
Retornando softwares instalados no computador
Retornando softwares instalados no computador, filtrando somente por produtos que não contém o nome "Microsoft"
WEB
Baixando um arquivo
Método HTTP
Pegando somente o Status Code
Pegando somente o conteúdo html
Pegando somente o header
Pegando somente os links de uma página web
Usuários e Grupos
Listando usuários
Listando grupos
Usuários locais que fazem parte de um determinado grupo
Segurança
Ignorando política de execução, pois o PowerShell é altamente monitorado usando ACLs, histórico de comandos, System Center Configuration Manager [SCCM], etc.
ExecutionPolicy
Tipos de perfil:
Default= Política de execução padrão. Restricted para usuários em Desktop e RemoteSigned caso seja um servidorRemoteSigned= Os scripts baixados na internet são obrigados a ter uma assinatura digital de uma fonte confiávelRestricted= Comandos individuais podem ser executados, porém arquivos ps1 não podemUnrestricted= Script que não são assinados podem ser executadosUndefined= Não possui política definida para o escopo atualAllSigned= Os scripts executados devem ser assinados por uma fonte confiável
Verificando a configuração atual
Verificando a permissão de um determinado escopo
Verificando a permissão de todos os escopos
Realizando bypass para pegar todos os acessos
Outra maneira de realizarmos bypass, é alterando o $AuthorizationManager por $null, é executando o comando abaixo. Nada é exibido na tela e se executarmos um Get-ExecutionPolicy, nada irá ser alterado também, porém mesmo assim podemos executar arquivos ps1 no powershell.
Bypass na execução de um único arquivo
Executa um comando com bypass e em seguida já volta para o padrão de segurança do Powershell
Deixa o terminal com permissões de execução. Note que para ter êxito com esse comando, precisa ter acesso administrador
Altera a permissão no escopo Process
Altera a permissão no escopo CurrentUser -Force
Verificando permissões de diretório
Service Unquoted
Retorna um conjunto de serviços que possui um caminho inseguro configurado incorretamente durante a instalação
Condições / Repetidores
Contadores
Foreach
Sites
Last updated
Was this helpful?