在 PowerShell 脚本中保存已编辑的 XML 文件时出现问题

在 PowerShell 脚本中保存已编辑的 XML 文件时出现问题

我正在编写一个 PowerShell 脚本,需要以“任何用户”的身份编辑声明到 Windows 令牌服务 (C2WTS) 的 xml 配置文件,但一旦我对 XML 对象进行了更改,就无法保存该文件。使用以下代码:

$xml.load("C:\Program Files\Windows Identity Foundation\v3.5\c2wtshost.exe.config")
changes here
$xml.save("C:\Program Files\Windows Identity Foundation\v3.5\c2wtshost.exe.config")

运行此代码,我收到错误:

使用“1”个参数调用“保存”时发生异常:“拒绝访问路径‘C:\Program Files\Windows Identity Foundation\v3.5\c2wtshost.exe.config’。”

我尝试设置 ACL,以便运行脚本的用户可以使用以下代码编辑 XML 文件:

$acl = Get-Acl "C:\Program Files\Windows Identity Foundation\v3.5\c2wtshost.exe.config"
$Ar = New-Object system.Security.AccessControl.FileSystemAccessRule($user,"FullControl","Allow")
$acl.SetAccessRule($Ar)
Set-Acl "C:\Program Files\Windows Identity Foundation\v3.5\c2wtshost.exe.config" $acl

但返回错误:

“Set-Acl:尝试执行未经授权的操作。”

有人能帮助我保存对 XML 文件所做的更改吗?

答案1

不确定您使用的是什么操作系统,但 Vista 内核讨厌向 Program Files 写入任何内容,安装程序除外。一些较旧的程序不兼容,因为它们尝试将更新等下载到该文件夹​​并失败。我没有调查原因,因为我认为这总体上是一件好事。但我确信涉及权限问题。您是否检查过目标文件夹及其父文件夹的权限?

此外,我不知道这有多大关系,但如果该文件被任何人访问,它将无法编辑。产生的错误消息通常与权限问题类似。你知道该文件是否有另一个句柄吗?

相关内容