Aunque a primera vista pase inadvertido, cuando se trabaja con Windows PowerShell, en realidad se está trabajando con objetos de .NET Framework. A medida que vaya ganando experiencia, cada vez le resultará más evidente la eficacia del procesamiento de objetos, utilizará los objetos y entenderá su lógica.
Técnicamente, un objeto de .NET Framework es una instancia de una clase de .NET Framework que se compone de datos y de las operaciones asociadas a esos datos. No obstante, un objeto puede concebirse como una entidad de datos con propiedades (que son como características) y métodos (acciones que se pueden llevar a cabo sobre el objeto).
Por ejemplo, cuando obtiene un servicio en Windows PowerShell, en realidad obtiene un objeto que representa el servicio. Cuando consulta información sobre un servicio, está viendo las propiedades del objeto de servicio y cuando inicia un servicio (es decir, cuando cambia el valor de la propiedad Status del servicio a "started") está utilizando un método del objeto de servicio.
Todos los objetos del mismo tipo tienen las mismas propiedades y métodos, pero cada instancia del objeto puede tener establecidos valores distintos para sus propiedades. Por ejemplo, todos los objetos de servicio tienen las propiedades Name y Status. Sin embargo, cada servicio puede tener un nombre y un estado diferentes.
Cuando esté preparado, le será fácil conocer a fondo los objetos. Si desea saber qué tipo de objeto obtiene un cmdlet, utilice el operador de canalización (|) para enviar los resultados de un comando "get" al comando Get-Member. Por ejemplo, el comando siguiente envía los objetos recuperados por un comando Get-Service a Get-Member.
get-service | get-member
Get-Member muestra información sobre el objeto de servicio, incluidos el nombre del tipo del objeto y una lista de sus propiedades y métodos.
TypeName: System.ServiceProcess.ServiceController Name MemberType Definition ---- ---------- ---------- Name AliasProperty Name = ServiceName add_Disposed Method System.Void add_Disposed(EventHandler value) Close Method System.Void Close() Continue Method System.Void Continue() ...
Para obtener información sobre una clase de objetos, copie y pegue el nombre del tipo (por ejemplo, System.ServiceProcess.ServiceController) en MSDN. Cuando encuentre la clase, podrá leer los subtemas de MSDN para conocer las propiedades y los métodos de los objetos basados en dicha clase, como los de Windows PowerShell.
Si desea buscar los valores de todas las propiedades de un determinado objeto, utilice el operador de canalización (|) para enviar los resultados de un comando "get" a un comando Format-List o Format-Table. Utilice el parámetro Property de los cmdlets de formato con el valor "todos" (*). Por ejemplo, para buscar todas las propiedades del servicio Schedule en el sistema, escriba:
get-service schedule | format-list -property *
A continuación se muestra un ejemplo de los resultados:
Name : Schedule CanPauseAndContinue : True CanShutdown : True CanStop : True DisplayName : Task Scheduler DependentServices : {} MachineName : . ServiceName : Schedule ServicesDependedOn : {RpcSs} ServiceHandle : SafeServiceHandle Status : Running ServiceType : Win32ShareProcess Site : Container :
No necesita tener ningún conocimiento previo sobre los objetos al empezar a utilizar Windows PowerShell; sólo necesita tener en su mente el concepto de "objeto". Muy pronto sabrá cómo utilizar los objetos y sacar el máximo provecho de ellos.