2016-09-02 4 views
0

J'essaie d'exécuter un script qui exécutera un autre script Powershell lors du redémarrage. J'utilise la clé HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Run.Le script d'administration ne sera pas relancé en tant qu'administrateur au redémarrage

Mon problème est que le script se lance au redémarrage, mais s'exécute à partir d'une fenêtre PS non-administrateur. Cela me donne "accès refusé". J'ai désactivé l'UAC sur le système, mais j'ai la même erreur. Comment puis-je le lancer à partir de la fenêtre Admin Powershell lors du redémarrage?

ont actuellement:

REG ADD HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Run/v RunThis /t REG_SZ/f/j « C: \ windows \ system32 \ WindowsPowerShell.exe - ExecutionPolicy Unrestricted -File C: \ script.ps1 -verb Runas

+0

Structure de phrase fixe; libellé serré. – Prune

Répondre

0

en supposant que vous ne soyez pas refusé l'accès lorsque vous exécutez manuellement, ce qui devrait résoudre le problème Ouvrez l'invite admin Powershell clé dans cette -

..
set-executionpolicy remotesigned 

Maintenant, ajoutez cela à la clé Run -

"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -file C:\script.ps1 
0

Cela dépend vraiment de deux facteurs: les paramètres du CCU; est le domaine de la machine joint; etc ...

Ce script fonctionnera dans la plupart des scénarios. REMARQUE: L'hôte admin powershell se ferme une fois l'exécution du script terminée.

$currentUserID = [System.Security.Principal.WindowsIdentity]::GetCurrent() 
$currentUserPrincipal = New-Object System.Security.Principal.WindowsPrincipal($currentUserID) 

$adminPrincipal = [System.Security.Principal.WindowsBuiltInRole]::Administrator 

# If not already admin start a new process and pass the current session definition to the admin powershell instance. 
if(-not ($currentUserPrincipal.IsInRole($adminPrincipal))) { 
    $adminProc = New-Object System.Diagnostics.ProcessStartInfo "powershell" 
    $adminProc.Arguments = $MyInvocation.MyCommand.Definition 
    $adminProc.Verb = "runas" 

    [System.Diagnostics.Process]::Start($adminProc) 

    #If you don't need to keep the current session open uncomment this line. 
    #exit 
} 

# Any code executed at this point will execute in an admin PS session. 
ping google.com