2017-01-26 4 views
0

Wir führen Coded UI-Tests für den IE in Windows 8.1 aus, und wir machen es über Visual Studio Team Services. Als Teil unseres Builds führen wir ein Powershell-Skript aus, das den Popup-Manager deaktiviert. Der Code, den wir deaktivieren verwenden, ist dies:Powershell: Ein Registrierungspfad kann nicht aktualisiert werden, da er nicht existiert (aber tatsächlich existiert)

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" 

Wenn ich einen Build in Release Manager erstellen und bereitstellen, läuft dies die folgende Fehlermeldung erzeugt:

The running command stopped because the preference variable "ErrorActionPreference" or common parameter is set to Stop: Cannot find path 'HKCU:\Software\Microsoft\Internet Explorer\New Windows' because it does not exist.

(Hervorhebung von mir)

Ich habe mich bei der VM angemeldet und die Registrierung überprüft, und HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\New Windows existiert absolut. Das einzige, was ich mir vorstellen kann ist, dass sein Wert kein DWORD ist, sondern eine Zeichenkette - der Schlüssel PopupMgr hat einen Datenwert von "yes" statt 1 oder 0. Aber das passt nicht zur Fehlermeldung - Der Fehler besagt, dass der Pfad des Schlüssels nicht gefunden werden kann, nicht dass der Werttyp nicht übereinstimmt. Außerdem entfernt der Code den vorhandenen Schlüssel, bevor er einen neuen einfügt, so dass ich nicht einmal weiß, wie er den Unterschied erkennen würde.

Noch seltsamer, wenn ich Powershell innerhalb der VM öffne und diese genau zwei Zeilen (ich kopierte und eingefügt, um Tippfehler zu vermeiden), lief sie ganz gut.

Dieses Skript funktionierte unter Windows 10 perfekt und hat eine Weile, so dass ich nicht sicher bin, was hier vor sich geht. Der Benutzer ist Mitglied der Administratorengruppe. Daher glaube ich nicht, dass es sich um ein Berechtigungsproblem handelt.

Kann jemand etwas Licht darauf werfen?

+0

Ich vermute ps läuft unter einem anderen Benutzerkontext in diesem Fall (wahrscheinlich System), können Sie hinzufügen 'whoami' in Ihrem Skript direkt vor dem Aufruf, um die Registrierung zu ändern und zu überprüfen, die Ausgabe ist der erwartete Benutzer? – 4c74356b41

Antwort

1

Ich denke, Sie versuchen, die Registrierungsschlüssel hinzufügen Eigenschaft Wert Sie müssen für die Existenz des Registrierungsschlüssels testen. Wenn der Registrierungsschlüssel nicht vorhanden ist, müssen Sie den Registrierungsschlüssel erstellen und anschließend den Registrierungsschlüsseleigenschaftswert erstellen.

Sie sollten den Pfad zum Registrierungsschlüssel erstellen und dann den Namen der Eigenschaft und den Wert angeben, den ich zuweisen möchte. Diese besteht aus drei Variablen wie hier gezeigt:

Diese Ihnen helfen sollte:

$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} 

Hoffe, es hilft.

+0

Das hat funktioniert. Vielen Dank! –

+0

@AriRoth: Die Annahme der Antwort wäre sehr spürbar. :) –

+0

Whoops. Ich wollte das machen, aber ich habe den falschen Knopf gedrückt. :) –

Verwandte Themen