TEMA about_methods DESCRIPCIÓN BREVE Describe cómo se usan los métodos para realizar acciones en los objetos de Windows PowerShell. DESCRIPCIÓN DETALLADA Windows PowerShell usa colecciones estructuradas de datos, denominadas objetos, para representar los elementos de los almacenes de datos o el estado del equipo. Por ejemplo, cuando se obtiene acceso a un archivo en Windows PowerShell, en realidad, no se trabaja con el archivo sino con un objeto FileInfo, un tipo de objeto que actúa como proxy del archivo. La mayoría de los objetos incluyen métodos. Un método es un conjunto de instrucciones que especifican una acción determinada que puede realizar con ese objeto. Por ejemplo, el objeto FileInfo incluye un método denominado CopyTo, que permite copiar el archivo representado por el objeto. Para ver una lista de los métodos y definiciones de método asociados con un objeto específico, puede usar el cmdlet Get-Member. No obstante, para usar el cmdlet, el objeto debe existir ya en alguna forma, ya sea representado mediante una variable, como un objeto creado al especificar un comando como argumento del comando Get-Member, o bien, como un objeto pasado a través de una canalización. Por ejemplo, suponga que se ha asignado a la variable $a un valor de cadena, lo que significa que la variable está asociada con un objeto de cadena. Para ver la lista de métodos del objeto, escriba el siguiente comando en el símbolo del sistema de Windows PowerShell: Get-Member -inputobject $a -membertype method Si desea ver qué métodos y definiciones de método están asociados con un objeto que se pasa a través de la canalización, debe usar un comando Get-Member en la canalización, tal y como se muestra en el siguiente ejemplo: Get-ChildItem c:\final.txt | Get-Member -membertype method La manera más común de invocar un método es especificar el nombre del método a continuación de una referencia de objeto (como una variable o expresión). Debe separar la referencia de objeto y el método con un punto. Además, debe usar paréntesis inmediatamente a continuación del nombre de método para escribir los argumentos que desee pasar al método. Si no se pasa ningún argumento en una firma de método, se debe usar un conjunto de paréntesis vacíos. Por ejemplo, el siguiente comando usa el método GetType para devolver el tipo de datos asociado con el objeto de cadena $a: $a.GetType() El método GetType devuelve el tipo de datos para cualquier objeto y un objeto siempre se representa mediante una variable. El tipo del objeto dependerá del tipo de datos almacenados en esa variable. En Windows PowerShell, cada acción está asociada con objetos, tanto si se declara una variable como si se combinan comandos en una canalización. Por ello, es posible usar métodos en diversas situaciones. Por ejemplo, puede usar un método para realizar una acción con el valor de una propiedad, como se indica en el siguiente comando: (Get-ChildItem c:\final.txt).name.ToUpper() En este caso, el objeto en el que se está invocando el método ToUpper es el objeto de cadena asociado con la propiedad name. (Observe que el archivo Final.txt debe existir en la raíz de la unidad C: para que este ejemplo funcione.) La propiedad name es en realidad una propiedad del objeto FileInfo que el comando Get-ChildItem devuelve. Esto no solo ilustra la naturaleza orientada a objetos de Windows PowerShell, sino que también muestra cómo se puede llamar a métodos en cualquier objeto accesible. Puede obtener los mismos resultados que en el ejemplo anterior si usa una variable para almacenar el resultado del comando Get-ChildItem, tal y como se indica en el siguiente ejemplo: $a = (Get-ChildItem c:\final.txt).name $a.ToUpper() El comando vuelve a usar el método ToUpper del objeto de cadena asociado con la variable, que contiene el nombre de archivo devuelto por el comando Get-ChildItem. En algunos casos, un método requiere un argumento que dirija su acción. Por ejemplo, el objeto FileInfo incluye el método MoveTo, que proporciona una forma de mover un archivo de una ubicación a otra. El método requiere un argumento que especifica la ubicación de destino del archivo. El siguiente comando indica la forma de incluir ese argumento: (Get-ChildItem c:\final.txt).MoveTo("c:\techdocs\final.txt") El comando Get-ChildItem devuelve un objeto FileInfo para el archivo Final.txt y después usa el método MoveTo de ese objeto para iniciar la acción y especificar la nueva ubicación del archivo. Para determinar los argumentos asociados con un método, revise la definición de método correspondiente. Una definición de método contiene una o más firmas de método (también denominadas sobrecargas en Microsoft .NET Framework). Una firma de método contiene el nombre de un método y cero o más parámetros que el usuario debe proporcionar al llamar al método. En el cmdlet Get-Member, cada firma de método queda separada de la firma anterior mediante una coma. Por ejemplo, el método CopyTo de la clase FileInfo contiene las dos firmas de método siguientes: 1. CopyTo(String destFileName) 2. CopyTo(String destFileName, Boolean overwrite) La primera firma de método usa el nombre del archivo de destino (incluida la ruta de acceso) en el que se va a copiar el archivo de origen. En el siguiente ejemplo, se usa el primer método CopyTo para copiar Final.txt en el directorio C:\Bin: (Get-ChildItem c:\final.txt).CopyTo("c:\bin\final.txt") Si el archivo ya existe en la ubicación de destino, el método CopyTo no se ejecutará correctamente y Windows PowerShell notificará el siguiente error: Excepción al llamar a "CopyTo" con los argumentos "1": "El archivo 'c:\bin\final.txt' ya existe.". En la segunda firma de método, se pasa el nombre del archivo de destino igual que en el primer caso, pero también se pasa un valor booleano para especificar si se desea que se sobrescriba un archivo existente del mismo nombre en la ubicación de destino, tal y como se indica en el siguiente ejemplo: (Get-ChildItem c:\final.txt).CopyTo("c:\bin\final.txt", $true) Al pasar el valor booleano, debe usar la variable $True, que Windows PowerShell crea automáticamente. La variable $True contiene el valor booleano "true". (Como era de esperar, la variable $False contiene el valor booleano "false".) VEA TAMBIÉN about_Objects Get-Member