从PowerShell检查XML文件的正确方法

时间:2016-07-28 00:22:36

标签: xml powershell powershell-v2.0

在PowerShell v2脚本中,读取XMl文件的正确方法是什么?

我尝试使用XML文件作为配置源,因此我可以优雅地停止父PowerShell脚本。

逻辑:
PowerShell脚本循环遍历数组 在每个循环结束时,脚本检查XML文件以查看是否已将标志设置为停止。

$pathForceStop = "c:\theconfig.xml"

foreach($bean in $burrito)
{
  write-host $bean

  [xml]$xForceStop = Get-Content $pathForceStop
  if ($xForceStop.powerstop -eq "stop")
  {
     #stop running
     exit
  }
}

这是读取XML文件并避免锁定它的正确和最有效的方法吗?

1 个答案:

答案 0 :(得分:0)

IIRC,get-content逐行读取文件,在此期间会锁定文件。

此博客(http://powershell.com/cs/blogs/tobias/archive/2011/06/23/dealing-with-file-locks.aspx)提到了另一种读取文件内容的方法,这种方式更快,并且应该减少文件被锁定的时间。

$file = [System.io.File]::Open("$env:windir\windowsupdate.log", 'Open', 'Read', 'ReadWrite')
$reader = New-Object System.IO.StreamReader($file)
$text = $reader.ReadToEnd()
$reader.Close()
$file.Close()