about_Methods

Aplica-se a: Windows PowerShell 2.0, Windows PowerShell 3.0

TÓPICO

about_methods

DESCRIÇÃO BREVE

Descreve como usar métodos para executar ações com os objetos em Windows PowerShell.

DESCRIÇÃO LONGA

Windows PowerShell usa os objetos para representar os itens em armazenamentos de dados ou o estado do computador. Por exemplo, objetos FileInfo representam os arquivos em unidades de sistema de arquivos e objetos ProcessInfo representam os processos no computador.

Objetos têm propriedades, que armazenam dados sobre o objeto, e métodos que permitem que você altere o objeto.

Um "método" é um conjunto de instruções que especificam uma ação que você pode executar no objeto. Por exemplo, o objeto FileInfo inclui o método CopyTo que copia o arquivo que representa o objeto FileInfo.

Para obter os métodos de qualquer objeto, use o cmdlet Get-Member. Use a propriedade MemberType com um valor de "Método". O comando a seguir obtém os métodos dos objetos de processo.

        PS C:\>Get-Process | Get-Member -MemberType Method
       
           TypeName: System.Diagnostics.Process

         Name                      MemberType Definition
         ----                      ---------- ----------
         BeginErrorReadLine        Method     System.Void BeginErrorReadLine()
         BeginOutputReadLine       Method     System.Void BeginOutputReadLine()
         ...
         Kill                      Method     System.Void Kill()
         Refresh                   Method     System.Void Refresh()
         Start                     Method     bool Start()
         ToString                  Method     string ToString()
         WaitForExit               Method     bool WaitForExit(int milliseconds), System.Void WaitForExit()
         WaitForInputIdle          Method     bool WaitForInputIdle(int milliseconds), bool WaitForInputIdle()

Para executar ou "invocar" um método de um objeto, digite um ponto (.), o nome do método e um conjunto de parênteses "()". Se o método utiliza argumentos, coloque os valores de argumento dentro dos parênteses. Os parênteses são necessários para cada chamada de método, mesmo quando não houver nenhum argumento.

Por exemplo, o comando a seguir chama o método Kill de processos para finalizar o processo do bloco de notas no computador. Como resultado, a instância do bloco de notas é fechada. (O comando Get-Process é colocado entre parênteses para garantir que ele seja executado antes que o método Kill seja invocado.

        (Get-Process Notepad).Kill()

Outro processo muito útil é o método de divisão de cadeias de caracteres. O método de divisão leva um argumento de caractere delimitador que informa ao método no qual dividir a cadeia de caracteres.

        PS C:\>$a = "Try-Catch-Finally"
        PS C:\>$a.Split("-")
        Try
        Catch
        Finally

Conforme mostrado nos exemplos anteriores, você pode invocar um método em um objeto que você obtém por meio de um comando ou um objeto em uma variável.

A partir do Windows PowerShell 4.0, a invocação de método usando nomes de método dinâmico tem suporte.

APRENDENDO SOBRE MÉTODOS

Para encontrar as definições dos métodos de um objeto, vá para o tópico de ajuda para o tipo de objeto na MSDN e procure a sua página de métodos. Por exemplo, a página a seguir descreve os métodos de objetos de processo (System.Diagnostics.Process).

         https://msdn.microsoft.com/library/system.diagnostics.process_methods

Para determinar os argumentos de um método, consulte a definição de método, que é como o diagrama de sintaxe de um cmdlet Windows PowerShell.

Uma definição de método pode ter uma ou mais assinaturas de método, que são como os conjuntos de parâmetro de cmdlets Windows PowerShell. As assinaturas mostram todos os formatos válidos de comandos para invocar o método.

Por exemplo, o método CopyTo da classe FileInfo contém as duas seguintes assinaturas de método:

        1. CopyTo(String destFileName)
        2. CopyTo(String destFileName, Boolean overwrite)

A primeira assinatura de método utiliza o nome do arquivo de destino (e um caminho). O exemplo a seguir usa o primeiro método CopyTo para copiar o arquivo Final.txt para o diretório C:\Bin.

        (Get-ChildItem c:\final.txt).CopyTo("c:\bin\final.txt")

A segunda assinatura de método leva um nome de arquivo de destino e um valor booliano que determina se o arquivo de destino deve ser substituído, caso ele já exista.

O exemplo a seguir usa o segundo método CopyTo para copiar o arquivo Final.txt para o diretório C:\Bin e substituir os arquivos existentes.

        (Get-ChildItem c:\final.txt).CopyTo("c:\bin\final.txt", $true)

MÉTODOS DE OBJETOS ESCALARES E COLEÇÕES

Os métodos de um objeto ("escalar") de um tipo específico geralmente são diferentes dos métodos de uma coleção de objetos do mesmo tipo.

Por exemplo, todo processo tem um método Kill, mas uma coleção de processos não tem um método Kill.

A partir de Windows PowerShell 3.0, Windows PowerShell tenta impedir os erros de script resultantes dos métodos diferentes de coleções e objetos escalares.

A partir de Windows PowerShell 4.0, a filtragem de coleções usando uma sintaxe de método tem suporte.

Se você enviar uma coleção, mas solicitar um método que existe apenas em objetos ("escalares"), o Windows chama o método em todos os objetos na coleção.

Se o método existe em objetos individuais e na coleção, o Windows PowerShell não altera o resultado.

Esse recurso também funciona nas propriedades dos objetos escalares e coleções. Para obter mais informações, consulte about_Properties.

EXEMPLOS

O exemplo a seguir executa o método Kill de objetos de processo individual em uma coleção de objetos de processo. Este exemplo funciona apenas em Windows PowerShell 3.0 e versões posteriores do Windows PowerShell.

O primeiro comando inicia três instâncias do processo do bloco de notas. O segundo comando usa o comando Get-Process para obter todas as três instâncias do processo do bloco de notas e salvá-las na variável $p.

        PS C:\>Notepad; Notepad; Notepad
        PS C:\>$p = Get-Process Notepad
        

O terceiro comando usa a propriedade de contagem de todas as coleções para verificar se há três processos na variável $p.

        PS C:\>$p.Count
        3

O quarto comando executa o método Kill em todos os três processos na variável $p.

Esse comando funciona mesmo se uma coleção de processos não tem um método Kill.

        PS C:\>$p.Kill()

O quinto comando usa o comando Get-Process para confirmar se o comando Kill funcionou.

        PS C:\>Get-Process Notepad
        Get-Process : Cannot find a process with the name "notepad". Verify the process name and call the cmdlet again.
        At line:1 char:12
        + get-process <<<<  notepad
            + CategoryInfo          : ObjectNotFound: (notepad:String) [Get-Process], ProcessCommandException
            + FullyQualifiedErrorId : NoProcessFoundForGivenName,Microsoft.PowerShell.Commands.GetProcessCommand

Para executar a mesma tarefa em Windows PowerShell 2.0, use o cmdlet Foreach-Object para executar o método em cada objeto na coleção.

        PS C:\>$p | Foreach-Object {$_.Kill()}

CONSULTE TAMBÉM

about_Objects

about_Properties

Get-Member