在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文件并避免锁定它的正确和最有效的方法吗?
答案 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()