Benutzer mit den meisten Antworten
PowerShell - Zugriff verweigert, PermissionDenied

Frage
-
Hallo, ich verwende am Anfang des Skripts
Get-Credential-UserName"Computername\Admin"-Message"Bitte Kennwort eingeben, damit die Änderungen übernommen werden können!"
Obwohl die Eingabe meiner Credentials erfolgreich war, erhalte ich immer wieder die Fehlermeldung "Zugriff verweigert", wenn ich ein Skript per Rechtsklick > "Mit Powershell ausführen" öffne.
Öffne ich eine PowerShell Konsole zuvor als Administrator (Als Administrator ausführen) und gebe hier die Credentials ein, funktioniert die Abarbeitung fehlerfrei.
Hier ein Auszug:
UserName Password
-------- --------
Computername\Admin System.Security.SecureString
Remove-NetIPAddress : Zugriff verweigert
In C:\Temp\IP-Konfiguration_LoadBalancer.ps1:28 Zeichen:16
+ ... $adapter | Remove-NetIPAddress -AddressFamily $IPType -Confirm:$fals ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (MSFT_NetIPAddre...ystemName = ""):ROOT/StandardCimv2/MSFT_NetIPAddres
s) [Remove-NetIPAddress], CimException
+ FullyQualifiedErrorId : Windows System Error 5,Remove-NetIPAddressRemove-NetRoute : Zugriff verweigert
In C:\Temp\IP-Konfiguration_LoadBalancer.ps1:32 Zeichen:16
+ $adapter | Remove-NetRoute -AddressFamily $IPType -Confirm:$false
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (MSFT_NetRoute (...:55:8:8:8:55;"):ROOT/StandardCimv2/MSFT_NetRoute) [
Remove-NetRoute], CimException
+ FullyQualifiedErrorId : Windows System Error 5,Remove-NetRouteRemove-NetRoute : Zugriff verweigert
In C:\Temp\IP-Konfiguration_LoadBalancer.ps1:32 Zeichen:16
+ $adapter | Remove-NetRoute -AddressFamily $IPType -Confirm:$false
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (MSFT_NetRoute (...:55:8:8:8:55;"):ROOT/StandardCimv2/MSFT_NetRoute) [
Remove-NetRoute], CimException
+ FullyQualifiedErrorId : Windows System Error 5,Remove-NetRouteRemove-NetRoute : Zugriff verweigert
In C:\Temp\IP-Konfiguration_LoadBalancer.ps1:32 Zeichen:16
+ $adapter | Remove-NetRoute -AddressFamily $IPType -Confirm:$false
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (MSFT_NetRoute (...:55:8:8:8:55;"):ROOT/StandardCimv2/MSFT_NetRoute) [
Remove-NetRoute], CimException
+ FullyQualifiedErrorId : Windows System Error 5,Remove-NetRouteRemove-NetRoute : Zugriff verweigert
In C:\Temp\IP-Konfiguration_LoadBalancer.ps1:32 Zeichen:16
+ $adapter | Remove-NetRoute -AddressFamily $IPType -Confirm:$false
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (MSFT_NetRoute (...??8;:?8???55;"):ROOT/StandardCimv2/MSFT_NetRoute) [
Remove-NetRoute], CimException
+ FullyQualifiedErrorId : Windows System Error 5,Remove-NetRouteNew-NetIPAddress : Instance MSFT_NetIPAddress already exists
In C:\Temp\IP-Konfiguration_LoadBalancer.ps1:36 Zeichen:12
+ $adapter | New-NetIPAddress `
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (MSFT_NetIPAddress:ROOT/StandardCimv2/MSFT_NetIPAddress) [New-NetIPAddr
ess], CimException
+ FullyQualifiedErrorId : Windows System Error 87,New-NetIPAddressSet-DnsClientServerAddress : Für den Client war kein Zugriff auf eine CIM-Ressource verfügbar.
In C:\Temp\IP-Konfiguration_LoadBalancer.ps1:43 Zeichen:12
+ $adapter | Set-DnsClientServerAddress -ServerAddresses $DNS
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (MSFT_DNSClientS...stemName = "2"):ROOT/StandardCi...ntServerAddress)
[Set-DnsClientServerAddress], CimException
+ FullyQualifiedErrorId : MI RESULT 2,Set-DnsClientServerAddressSet-DnsClientServerAddress : Für den Client war kein Zugriff auf eine CIM-Ressource verfügbar.
In C:\Temp\IP-Konfiguration_LoadBalancer.ps1:43 Zeichen:12
+ $adapter | Set-DnsClientServerAddress -ServerAddresses $DNS
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (MSFT_DNSClientS...temName = "23"):ROOT/StandardCi...ntServerAddress)
[Set-DnsClientServerAddress], CimException
+ FullyQualifiedErrorId : MI RESULT 2,Set-DnsClientServerAddress
Wie kann ich das lösen?! Danke.- Bearbeitet ajubana Mittwoch, 14. September 2016 08:33
Antworten
-
> Get-Credential-UserName"Computername\Admin"-Message"Bitte Kennwort> eingeben, damit die Änderungen übernommen werden können!"Und was machst Du dann weiters mit diesem Credential?> Obwohl die Eingabe meiner Credentials erfolgreich war, erhalte ich immer> wieder die Fehlermeldung "Zugriff verweigert", wenn ich ein Skript per> Rechtsklick > "Mit Powershell ausführen" öffne.Lies Dich mal ein wenig in UAC und "restricted Token" ein:Wenn etwas "als Admin" laufen muß, kann es das nicht "aus sich selbstheraus" veranlassen.
- Als Antwort vorgeschlagen Evgenij Smirnov Mittwoch, 14. September 2016 10:09
- Als Antwort markiert Denniver ReiningMVP, Moderator Donnerstag, 15. September 2016 10:35
-
Hi ajubana,
wie Martin schon schreibt, fragst Du zwar Credentials ab, aber damit passiert nichts. Du müsstest quasi Dein Skript anweisen, dass es sich selbst nochmal mit Admin-Rechten startet (quasi ein automatisches "Ausführen als Administrator").
Bau den folgenden Block an den Anfang Deines Skripts; dieser überprüft, ob Dein ausführender Benutzer in der lokalen Admin-Gruppe drin ist und fragt dann nach einer Rechteanhebung. Dann wird das Skript nochmal mit Admin-Rechten ausgeführt:
# Execute script with elevated rights $identity = [System.Security.Principal.WindowsIdentity]::GetCurrent() $princ = New-Object System.Security.Principal.WindowsPrincipal($identity) if(!$princ.IsInRole( ` [System.Security.Principal.WindowsBuiltInRole]::Administrator)) { $powershell = [System.Diagnostics.Process]::GetCurrentProcess() $psi = New-Object System.Diagnostics.ProcessStartInfo $powerShell.Path $script = $MyInvocation.MyCommand.Path $prm = $script foreach($a in $args) { $prm += ' ' + $a } $psi.Arguments = $prm $psi.Verb = "runas" [System.Diagnostics.Process]::Start($psi) | Out-Null return; }
Liebe Grüße
Ben
____________________________
MCSA Office 365
MCSA SQL Server 2014
MCITP Windows 7
MCSA Windows 8/10
MCSE Server Infrastructure
____________________________
Wenn Dir meine Antwort hilft, markiere sie bitte entsprechend als Antwort. Danke! :-).
- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Mittwoch, 14. September 2016 15:24
- Als Antwort markiert Denniver ReiningMVP, Moderator Donnerstag, 15. September 2016 10:35
Alle Antworten
-
> Get-Credential-UserName"Computername\Admin"-Message"Bitte Kennwort> eingeben, damit die Änderungen übernommen werden können!"Und was machst Du dann weiters mit diesem Credential?> Obwohl die Eingabe meiner Credentials erfolgreich war, erhalte ich immer> wieder die Fehlermeldung "Zugriff verweigert", wenn ich ein Skript per> Rechtsklick > "Mit Powershell ausführen" öffne.Lies Dich mal ein wenig in UAC und "restricted Token" ein:Wenn etwas "als Admin" laufen muß, kann es das nicht "aus sich selbstheraus" veranlassen.
- Als Antwort vorgeschlagen Evgenij Smirnov Mittwoch, 14. September 2016 10:09
- Als Antwort markiert Denniver ReiningMVP, Moderator Donnerstag, 15. September 2016 10:35
-
Hi ajubana,
wie Martin schon schreibt, fragst Du zwar Credentials ab, aber damit passiert nichts. Du müsstest quasi Dein Skript anweisen, dass es sich selbst nochmal mit Admin-Rechten startet (quasi ein automatisches "Ausführen als Administrator").
Bau den folgenden Block an den Anfang Deines Skripts; dieser überprüft, ob Dein ausführender Benutzer in der lokalen Admin-Gruppe drin ist und fragt dann nach einer Rechteanhebung. Dann wird das Skript nochmal mit Admin-Rechten ausgeführt:
# Execute script with elevated rights $identity = [System.Security.Principal.WindowsIdentity]::GetCurrent() $princ = New-Object System.Security.Principal.WindowsPrincipal($identity) if(!$princ.IsInRole( ` [System.Security.Principal.WindowsBuiltInRole]::Administrator)) { $powershell = [System.Diagnostics.Process]::GetCurrentProcess() $psi = New-Object System.Diagnostics.ProcessStartInfo $powerShell.Path $script = $MyInvocation.MyCommand.Path $prm = $script foreach($a in $args) { $prm += ' ' + $a } $psi.Arguments = $prm $psi.Verb = "runas" [System.Diagnostics.Process]::Start($psi) | Out-Null return; }
Liebe Grüße
Ben
____________________________
MCSA Office 365
MCSA SQL Server 2014
MCITP Windows 7
MCSA Windows 8/10
MCSE Server Infrastructure
____________________________
Wenn Dir meine Antwort hilft, markiere sie bitte entsprechend als Antwort. Danke! :-).
- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Mittwoch, 14. September 2016 15:24
- Als Antwort markiert Denniver ReiningMVP, Moderator Donnerstag, 15. September 2016 10:35
-
Hi ajubana,
wie Martin schon schreibt, fragst Du zwar Credentials ab, aber damit passiert nichts. Du müsstest quasi Dein Skript anweisen, dass es sich selbst nochmal mit Admin-Rechten startet (quasi ein automatisches "Ausführen als Administrator").
Bau den folgenden Block an den Anfang Deines Skripts; dieser überprüft, ob Dein ausführender Benutzer in der lokalen Admin-Gruppe drin ist und fragt dann nach einer Rechteanhebung. Dann wird das Skript nochmal mit Admin-Rechten ausgeführt:
# Execute script with elevated rights $identity = [System.Security.Principal.WindowsIdentity]::GetCurrent() $princ = New-Object System.Security.Principal.WindowsPrincipal($identity) if(!$princ.IsInRole( ` [System.Security.Principal.WindowsBuiltInRole]::Administrator)) { $powershell = [System.Diagnostics.Process]::GetCurrentProcess() $psi = New-Object System.Diagnostics.ProcessStartInfo $powerShell.Path $script = $MyInvocation.MyCommand.Path $prm = $script foreach($a in $args) { $prm += ' ' + $a } $psi.Arguments = $prm $psi.Verb = "runas" [System.Diagnostics.Process]::Start($psi) | Out-Null return; }
Liebe Grüße
Ben
____________________________
MCSA Office 365
MCSA SQL Server 2014
MCITP Windows 7
MCSA Windows 8/10
MCSE Server Infrastructure
____________________________
Wenn Dir meine Antwort hilft, markiere sie bitte entsprechend als Antwort. Danke! :-).
fett, Danke!
Wär nice, wenn Du das Skript etwas beschreiben könntest! :-) Ich verstehe z.B. den folgenden Eintrag nicht.
foreach($a in $args) { $prm += ' ' + $a }
Danke schön!VG, ajubana