5

我有以下 powershell 脚本,它扫描一个位置并将文件详细信息添加到 xml 文件中,

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 

据我了解,这应该是.net 框架中的一个对象,假设是一个数据集?我想做的是将此对象加载到 ac# 应用程序中并将其用作数据集。

如何将对象加载到 c# 中的数据集中?

4

2 回答 2

5
  1. 添加对System.Management.Automation.dll程序集的引用。
  2. 创建一个 PowerShellRunspace
  3. 打开Runspace
  4. 使用命令创建 PowerShellPipeline对象Import-CliXml
  5. 调用Pipeline
  6. 关上Runspace

        var rs = RunspaceFactory.CreateRunspace();
        rs.Open();
        var pl = rs.CreatePipeline(@"Import-CliXml c:\DATA\Final.xml;");
        var result = pl.Invoke();
        rs.Close();
    
于 2012-06-18T18:22:11.503 回答
0

更快的方法可能是:

- 对于列表

object[] xmlAsList =
     System.Management.Automation.PSSerializer.DeserializeAsList(System.IO.File.ReadAllText(@"C:\Users\batman\Desktop\myList.clixml"));

- 对于通用对象

object importedObject =
 System.Management.Automation.PSSerializer.Deserialize(System.IO.File.ReadAllText(@"C:\Users\batman\Desktop\myObject.clixml"));

然后,您通过以下方式管理结果:System.Management.Automation.PSObject使用Members属性。

于 2020-05-05T10:18:31.843 回答