Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Durante um workshop de PowerShell um aluno fez a seguinte pergunta: "Legal, você mostrou que o PowerShell é orientado à objetos, mas eu não vi nenhuma sobrecarga de métodos. Existe isso em PowerShell?"
Essa foi uma excelente pergunta, para mais detalhes sobre objetos no PoweShell consulte o artigo PowerShell | Objects.
A resposta é que existe uma maneira de fazer isso. Vamos imaginar que eu deseje criar uma função que sobreescreva o cmdlet Get-Process. O retorno padrão desse comando seria algo parecido com o a seguir:
Para sobrecarregar esse cmdlet, basta criar a seguinte função:
function Get-Process()
{
Write-Host "Esse é um exemplo de sobrecarga de função em powershell" -ForegroundColor Green
Microsoft.PowerShell.Management\Get-Process | ft id, name,
@{n="Virtual Memory (MB)";e={[Math]::Round($_.VM/1mb, 2)}},
@{n="Private Bytes (MB)";e={[Math]::Round($_.PrivateMemorySize/1mb, 2)}},
@{n="Working Set (MB)";e={[Math]::Round($_.WorkingSet/1mb, 2)}}
}
Observe que a função possui o mesmo nome do cmdlet Get-Process com a diferença que para executar o Get-Process original o namespace do mesmo foi utilizado para evitar uma recursividade.
O código da função retorna uma mensagem e formata o retorno do cmdlet Get-Process onde apenas 4 propriedades são retornadas com o valor em Megabytes. O resultado da execução da função sobrecarregada nesse caso é:
Espero que tenham gostado. Até a próxima.

