Explorando propriedades e métodos
Esta aula ensina a explorar propriedades e métodos de objetos no PowerShell usando Get-Member, acessar propriedades e chamar métodos com exemplos práticos.
No PowerShell, tudo é um objeto. Cada objeto possui propriedades (dados) e métodos (ações). Saber explorar esses membros é essencial para manipular dados de forma eficiente. Nesta aula, você aprenderá a usar o cmdlet Get-Member para descobrir o que um objeto oferece, a acessar propriedades e a chamar métodos, com exemplos do mundo real.
Dominar propriedades e métodos permite que você extraia informações específicas, modifique objetos e execute operações complexas com poucas linhas de código. Vamos começar!
Get-Member
O cmdlet Get-Member (ou seu alias gm) é a ferramenta principal para inspecionar objetos. Ele exibe as propriedades, métodos e eventos de um objeto, além de seus tipos e definições. Sempre que você encontrar um novo tipo de objeto, use Get-Member para entender sua estrutura.
Para usar, pipe um objeto para Get-Member. Exemplo:
Get-Process | Get-MemberIsso lista todos os membros de um processo. Você pode filtrar por tipo de membro com os parâmetros -MemberType (Property, Method, Event) ou -Name para buscar um nome específico. Use -Force para ver membros ocultos ou internos.
Acessando propriedades
Propriedades são acessadas usando a notação de ponto: $objeto.Propriedade. Você pode acessar uma única propriedade ou várias. Por exemplo:
$processo = Get-Process -Id $pid
$processo.Name # Retorna o nome do processo
$processo.StartTime # Retorna a hora de inícioPara acessar propriedades aninhadas, encadeie pontos: $objeto.Propriedade.SubPropriedade. Cuidado com valores nulos; use operadores como ?. (no PowerShell 7+) para evitar erros. Exemplo:
$processo.StartInfo?.FileName # Acessa FileName se StartInfo não for nuloChamando métodos
Métodos são ações que o objeto pode executar. São chamados com parênteses: $objeto.Metodo(argumentos). Métodos podem ter parâmetros obrigatórios ou opcionais. Exemplo com o objeto System.String:
$texto = "Olá, Mundo!"
$texto.ToUpper() # Retorna "OLÁ, MUNDO!"
$texto.Contains("Mundo") # Retorna TrueMétodos podem modificar o objeto (se for mutável) ou retornar um novo valor. Alguns métodos não retornam nada (void). Use Get-Member -MemberType Method para ver a assinatura completa.
Exemplos
Vamos combinar propriedades e métodos em cenários práticos.
Exemplo 1: Trabalhando com arquivos
$arquivo = Get-Item "C:\temp\exemplo.txt"
$arquivo.FullName # Propriedade: caminho completo
$arquivo.Length # Propriedade: tamanho em bytes
$arquivo.Delete() # Método: deleta o arquivoExemplo 2: Listando processos com propriedades específicas
Get-Process | Select-Object Name, CPU, WorkingSet | Where-Object { $_.CPU -gt 10 }Exemplo 3: Usando métodos de string para limpar dados
$dados = " João;30;RJ "
$dados = $dados.Trim() # Remove espaços
$partes = $dados.Split(';') # Divide em array
$nome = $partes[0]
$idade = [int]$partes[1] # Converte para inteiroExemplo 4: Chamando métodos em objetos COM
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $true # Propriedade
$excel.Quit() # MétodoBoas práticas
- Sempre verifique se um método existe antes de chamá-lo, usando
Get-Member. - Prefira acessar propriedades em vez de métodos quando possível, pois são mais rápidas.
- Use
Select-Objectpara selecionar apenas as propriedades necessárias. - Cuidado com métodos que modificam o sistema (ex.:
Delete()); teste em ambientes seguros.
Referências
- Get-Member (Microsoft Docs)
- About Objects (PowerShell 101)
- About Properties
- About Methods
- Everything About Objects
Exercícios
Use Get-Member para listar todas as propriedades de um objeto
System.DateTimeretornado porGet-Date. Quantas propriedades existem?✓ Resposta: ExecuteGet-Date | Get-Member -MemberType Property. O número de propriedades pode variar conforme a versão, mas geralmente são mais de 10 (ex.: Year, Month, Day, Hour, Minute, Second, DayOfWeek, etc.).Acesse a propriedade
Lengthde um arquivo de texto qualquer. Qual é o valor? (UseGet-Iteme a propriedadeLength.)✓ Resposta: Exemplo:(Get-Item "C:\temp\meu_arquivo.txt").Length. O valor será o tamanho em bytes. Se o arquivo não existir, ocorrerá erro.Chame o método
ToUpper()na string "powershell é legal". Qual é o resultado?✓ Resposta: O resultado é "POWERSHELL É LEGAL".Use Get-Member para encontrar um método que converta uma string para minúsculas. Qual é o nome do método?
✓ Resposta: O método éToLower(). Execute"teste" | Get-Member -MemberType Methode procure por ToLower.Crie um script que liste todos os processos com o nome "notepad" e, para cada um, exiba o nome do processo e o tempo de início (propriedade
StartTime).✓ Resposta:Get-Process -Name notepad | ForEach-Object { $_.Name + " - " + $_.StartTime }