使用XML文件在PowerShell中创建项目列表

时间:2017-03-21 13:59:55

标签: arrays xml list powershell data-conversion

我有一个放置文件的XML文件。我的目标是让PowerShell脚本显示所有文件及其属性的列表。

我的XML文件:

<FileList>
    <File>  
        <Path>C:\File1.txt</Path>
        <MaxSize>20000</MaxSize>
    </File>

    <File>  
        <Path>C:\File2.txt</Path>
        <MaxSize>20000</MaxSize>
    </File>
</FileList>

我在PowerShell中的输出需要检索文件及其大小。

示例输出:

File1: 4mb (max size= 20000mb)
File2: 3mb (max size= 20000mb)

后来,我后来想创建一个方法来检查每个文件是否低于其最大大小(但首先我需要检查我是否可以检索它们)

我正在尝试找到一种方法,我可以将所有文件从XML转换为PowerShell中的列表或数组(文件)但尚未成功。尝试实现这一目标时的最佳做法是什么?

当前代码:

$files = $configFile.SelectNodes("FileList/File")

foreach ($file in $files) {
  Write-Host $file.Path
}
break

1 个答案:

答案 0 :(得分:3)

从XML数据和文件属性创建自定义对象,并在变量中收集对象,例如像这样:

$list = foreach ($file in $files) {
  $f = Get-Item $file.Path
  New-Object -Type PSObject -Property @{
    Name    = $f.Name
    Path    = $file.Path
    Size    = $f.Length
    MaxSize = [int]$file.MaxSize
  }
}

或者,您可以将calculated properties添加到FileInfo个对象:

$list = foreach ($file in $files) {
  Get-Item $file.Path | Select-Object *,@{n='MaxSize';e={[int]$file.MaxSize}}
}