2012-06-18 18 views
5

tengo la siguiente secuencia de comandos PowerShell que escanea un lugar y añade los detalles de archivo en un archivo XML,de tener objeto PowerShell guardar como XML y la carga en C#

Get-ChildItem -recurse c:\DATA | Select-Object * , @{Name="Kbytes";Expression={ "{0:N0}" -f ($_.Length/1Kb) }},@{Name="Age";Expression={ (((Get-Date) - $_.CreationTime).Days) }} | Export-Clixml c:\DATA\Final.xml 

Por lo que yo entiendo esto debe ser un objeto en el .NET Framework, ¿asumiendo un conjunto de datos? lo que me gustaría hacer es cargar este objeto en una aplicación C# y usarlo como un conjunto de datos.

¿Cómo cargaría el objeto en un conjunto de datos en C#?

+0

Mediante el uso de Exportación -CliX ML estás serializando los datos. Entonces, cuando deserialices esto, no será un objeto vivo. Todos los métodos disponibles en el objeto se perderán. – ravikanth

Respuesta

5
  1. Agregue referencia al montaje System.Management.Automation.dll.
  2. Crear un PowerShell Runspace
  3. Abra la Runspace
  4. Crear un Pipeline objeto PowerShell con el comando Import-CliXml
  5. invocar la Pipeline
  6. Cierre la Runspace

    var rs = RunspaceFactory.CreateRunspace(); 
        rs.Open(); 
        var pl = rs.CreatePipeline(@"Import-CliXml c:\DATA\Final.xml;"); 
        var result = pl.Invoke(); 
        rs.Close(); 
    
Cuestiones relacionadas