2016-04-03 10 views
0

Ich versuche, einen Pfad in den Bereich Hinzufügen/Entfernen der Registrierung mit PowerShell hinzuzufügen, aber einen Fehler bei der Authentifizierung zu erhalten. Wenn ich Anmeldedaten verwende, sagt es mir, dass ich es nicht tun soll. Wenn ich es nicht tue, wird mir die Erlaubnis verweigert.Anmeldeinformationen beim Versuch, einen Registrierungspfad für die Deinstallation in Windows 10 mit Powershell hinzuzufügen

Das Konto ist lokal, nicht mit einer AD-Domäne verbunden.

Ich habe das folgende Skript:

$cred = Get-Credential 
write-host "DEBUG: Without credentials" 
New-Item HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Test_App -Force 
write-host "DEBUG: With -Credential" 
New-Item HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Test_App -Force -Credential $cred 

Es produziert die folgenden Fehler unter Windows 10:

Supply values for the following parameters: 
Credential 
DEBUG: Without credentials 
New-Item : Access to the registry key 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Test_App' is denied. 
At Z:\test.ps1:4 char:1 
+ New-Item HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Te ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
+ CategoryInfo   : PermissionDenied: (HKEY_LOCAL_MACH...nstall\Test_App:String) [New-Item], UnauthorizedAccessException 
+ FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.NewItemcommand 

DEBUG: With -Credential 
The provider does not support the use of credentials. Perform the operation again without specifying credentials. 
At Z:\test.ps1:7 char:1 
+ New-Item HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Te ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
+ CategoryInfo   : NotImplemented: (:) [], PSNotSupportedException 
+ FullyQualifiedErrorId : NotSupported 

Vorschläge, die über Windows Vista über Windows portiert werden 10 geschätzt :)

Antwort

0

Die Ausnahme tritt auf, weil Ihre Powershell-Instanz nicht mit erhöhten Rechten ausgeführt wird.

Also: Run Powershell als Administrator oder, wenn Sie einen Debugger wie Powershell ISE oder PowerGui verwenden, während Sie Ihr Skript schreiben; führen Sie das als Administrator.

Wenn Sie wollen einfach Ihre bestehende Skript auszuführen und haben es sich auf administrativer Ebene heben Sie Ihr Skript ändern können, wie folgt:

#this line added to the beginning of the script. 
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs; exit } 

#your original command 
write-host "DEBUG: Without credentials" 
New-Item HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Test_App -Force 

Eine relevante Frage SO; das Thema der selbst erhöhenden Skripte zu diskutieren, finden Sie here.

Hinweis: Der getestete Schnipsel ist aktiviert.

Windows-10

Powershell 5.0.10586.122