TÓPICO
about_methods
DESCRIÇÃO RESUMIDA
Descreve como usar os métodos para executar ações nos objetos no
Windows PowerShell.
DESCRIÇÃO LONGA
O Windows PowerShell usa coleções estruturadas de informações, chamada
objetos, para representar os itens nos repositórios de dados ou o
estado do computador. Por exemplo, quando você acessa um arquivo no
Windows PowerShell, você não está trabalhando com o arquivo real. Em
vez disso, você está trabalhando com um objeto FileInfo, um tipo de
objeto que age como o proxy do arquivo.
A maioria dos objetos inclui métodos. Um método é um conjunto de
instruções que especificam uma ação específica que pode ser
executada com esse objeto. Por exemplo, o objeto FileInfo inclui
um método chamado CopyTo, que permite copiar o arquivo
representado pelo objeto.
Para exibir uma lista de métodos e definições de métodos
associadas a um objeto particular, você pode usar o cmdlet
Get-Member. Entretanto, para usar o cmdlet, o objeto já deve
existir de alguma forma, como representado por uma variável, como
um objeto criado quando você especifica um comando como um
argumento para o comando Get-Member ou como um objeto transmitido
pelo pipeline. Por exemplo, suponha que tenha sido atribuído um
valor de cadeia de caracteres à variável $a, o que significa que
a variável está associada a um objeto de cadeia de caracteres.
Para exibir uma lista de métodos de objeto, digite o seguinte
comando no prompt de comando do Windows PowerShell:
Get-Member -inputobject $a -membertype method
Se você quiser ver que métodos e definições de métodos estão
associados a um objeto que é transmitido pelo pipeline, use um
comando Get-Member no pipeline, conforme mostrado no exemplo a seguir:
Get-ChildItem c:\final.txt | Get-Member -membertype method
O modo mais comum de chamar um método é especificar o nome do
método depois de uma referência de objeto (como uma variável ou
expressão). É necessário separar a referência do objeto e o
método com um ponto. Além disso, você deve usar parênteses
imediatamente depois do nome do método para agrupar qualquer
argumento que deve ser transmitido para o método.
Mesmo que nenhum argumento seja passado em uma assinatura de
método, será necessário usar um conjunto de parênteses vazios.
Por exemplo, o comando a seguir usa o método GetType para
retornar o tipo de dados associado ao objeto da cadeia de
caracteres $a:
$a.GetType()
O método GetType retornará o tipo de dados para qualquer objeto e uma
variável sempre representa um objeto. O tipo de objeto depende do
tipo de dados armazenado nessa variável.
Cada ação realizada no Windows PowerShell é associada a objetos,
independentemente de estar declarando uma variável ou combinando
comandos em um pipeline.
Como resultado, os métodos podem ser usados em diversas
situações. Por exemplo, é possível usar um método para executar
uma ação em um valor de propriedade, como mostrado no comando abaixo:
(Get-ChildItem c:\final.txt).name.ToUpper()
Nesse caso, o objeto no qual o método ToUpper está sendo chamado
é o objeto da cadeia de caracteres associado à propriedade de
nome. (Observe que o arquivo Final.txt deve existir na raiz da
unidade C: para que esse exemplo funcione.) A propriedade de nome
é realmente uma propriedade do objeto FileInfo retornado pelo
comando Get-ChildItem. Isso demonstra não apenas a natureza
orientada a objetos do Windows PowerShell, mas também mostra como
os métodos podem ser chamados em qualquer objeto acessível.
Você pode obter os mesmos resultados apresentados no último
exemplo, utilizando uma variável para armazenar a saída do
comando Get-ChildItem, como mostrado no exemplo a seguir:
$a = (Get-ChildItem c:\final.txt).name
$a.ToUpper()
O comando usa novamente o método ToUpper do objeto da cadeia de
caracteres associado à variável, que contém o nome do arquivo
retornado pelo comando Get-ChildItem.
Em alguns casos, um método necessita de um argumento para
direcionar a sua ação. Por exemplo, o objeto FileInfo inclui o
método MoveTo, que fornece uma forma de mover um arquivo de um
local para outro. O método requer um argumento que especifique o
local de destino para o arquivo. O seguinte comando demonstra
como incluir esse argumento:
(Get-ChildItem c:\final.txt).MoveTo("c:\techdocs\final.txt")
O comando Get-ChildItem retorna um objeto FileInfo para o arquivo
Final.txt e, em seguida, utiliza o método MoveTo daquele objeto
para iniciar a ação e especificar o novo local do arquivo.
Para determinar os argumentos associados a um método, revise a
definição do método correspondente. Uma definição de método
contém uma ou mais assinaturas de método (também conhecidas como
sobrecargas no Microsoft .NET Framework). Uma assinatura de
método contém o nome de um método e zero ou mais parâmetros que
você deve fornecer quando chamar o método. Cada assinatura de
método é separada da assinatura anterior com uma vírgula na
exibição do cmdlet Get-Member. Por exemplo, o método CopyTo da
classe FileInfo contém estas duas assinaturas de método:
1. CopyTo(String destFileName)
2. CopyTo(String destFileName, Boolean overwrite)
A primeira assinatura de método pega o nome do arquivo de destino
(incluindo o caminho) no qual copiar o arquivo de origem. No
exemplo a seguir, o primeiro método CopyTo é usado para copiar
Final.txt para o diretório C:\Bin:
(Get-ChildItem c:\final.txt).CopyTo("c:\bin\final.txt")
Se o arquivo já existir no local de destino, o método CopyTo
falhará e o Windows PowerShell reportará o seguinte erro:
Exceção ao chamar "CopyTo" com "1" argumento(s): "O arquivo
'c:\bin\final.txt' já existe.".
Na segunda assinatura do método, você transmite o nome do arquivo
de destino como você fez no primeiro caso, mas você também pode
transmitir um valor Booleano para especificar se deseja ou não
que um arquivo existente com o mesmo nome no local de destino
seja sobrescrito, conforme mostra o exemplo a seguir:
(Get-ChildItem c:\final.txt).CopyTo("c:\bin\final.txt", $true)
Quando você transmite o valor Booleano, deve usar a variável
$True, que é criada automaticamente pelo Windows PowerShell. A
variável $True contém o valor Booleano "true". (Como você deve
saber, a variável $False contém o valor Booleano "false".)
CONSULTE TAMBÉM
about_Objects
Get-Member