Ari*_*oth 3 powershell internet-explorer azure-pipelines azure-pipelines-release-pipeline
我们正在 Windows 8.1 中的 IE 上运行编码 UI 测试,并且我们通过 Visual Studio Team Services 进行测试。作为我们构建的一部分,我们运行了一个禁用弹出管理器的 Powershell 脚本。我们用来禁用它的代码是这样的:
Remove-ItemProperty "HKCU:\Software\Microsoft\Internet Explorer\New Windows" -Name "PopupMgr"
New-ItemProperty "HKCU:\Software\Microsoft\Internet Explorer\New Windows" -Name "PopupMgr" -Value 00000000 -PropertyType "DWord"
Run Code Online (Sandbox Code Playgroud)
当我在 Release Manager 中创建和部署构建时,运行它会生成以下错误:
运行命令停止,因为首选项变量“ErrorActionPreference”或公共参数设置为停止:找不到路径“HKCU:\Software\Microsoft\Internet Explorer\New Windows”,因为它不存在。
(强调我的)
我已经登录到 VM 并查看了注册表,并且HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\New Windows绝对存在。我唯一能想到的是它的值不是 DWORD 而是字符串——PopupMgr键的数据值为“是”而不是 1 或 0。但这与错误消息不匹配——错误说它甚至找不到键的路径,而不是值类型不匹配。另外,代码在插入新密钥之前删除了现有密钥,所以我什至不知道它是如何注意到不匹配的。
更奇怪的是,如果我在 VM 中打开 Powershell 并运行那两行(我复制并粘贴以避免输入错误),它们运行得很好。
这个脚本在 Windows 10 上运行得很好并且已经有一段时间了,所以我不确定这里发生了什么。用户是管理员组的成员,所以我认为这不是权限问题。
任何人都可以对此有所了解吗?
我认为您正在尝试添加注册表项属性值 您需要测试注册表项是否存在。如果注册表项不存在,则需要创建注册表项,然后创建注册表项属性值。
您应该创建注册表项的路径,然后指定要分配的属性名称和值。这包括三个变量,如下所示:
这应该可以帮助您:
$registryPath = "HKCU:\Software\Microsoft\Internet Explorer\New Windows"
$Name = "PopupMgr"
$value = "00000000"
IF(!(Test-Path $registryPath))
{
New-Item -Path $registryPath -Force | Out-Null
New-ItemProperty -Path $registryPath -Name $name -Value $value `
-PropertyType DWORD -Force | Out-Null}
ELSE {
New-ItemProperty -Path $registryPath -Name $name -Value $value `
-PropertyType DWORD -Force | Out-Null}
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你。