通过RunOnce提升权限的Powershell

通过RunOnce提升权限的Powershell,powershell,registry,Powershell,Registry,我正在尝试使用RunOnce注册表项运行powershell脚本。我需要它以管理员身份运行,我可以让脚本运行,但无法让它以提升的权限运行。这是我尝试过的,但没有任何效果 我的代码: %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -verb runas -File c:\script.ps1 有什么想法吗?尝试powershell.exe-executionpolicy unrestricted-file…并删除脚本中的s

我正在尝试使用RunOnce注册表项运行powershell脚本。我需要它以管理员身份运行,我可以让脚本运行,但无法让它以提升的权限运行。这是我尝试过的,但没有任何效果

我的代码:

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -verb runas -File c:\script.ps1

有什么想法吗?

尝试
powershell.exe-executionpolicy unrestricted-file…
并删除脚本中的
set execution unrestricted
行,因为它不会产生任何效果。如果powershell能够读取脚本文件中的该命令,则表示允许脚本=>不需要更改执行策略

Set ExecutionPolicy
是一个交互式命令,它不属于脚本(除非在远程计算机上运行)


此外,如果您试图使用RunOnce执行它,请确保使用HKLM RunOnce键运行它,以确保它在系统上下文中运行(因此它具有适当的权限)。

如果使用ServerFault,您可能会运气更好。我将查看登录触发的计划任务。()脚本将执行策略设置为unrestricted,但它给出一个错误,表示控制执行策略的注册表项被拒绝。如果我以管理员的身份运行脚本,它就可以正常工作。至于登录触发的计划任务,这是针对映像计算机的,我希望它在使用Windows 7映像后在首次登录时执行此操作。登录触发的计划任务对此是否更有效?是否尝试使用powershell.exe的执行策略参数?这将覆盖注册表中设置的执行策略并允许脚本运行。我不能说我已经尝试过了。此时,我已经创建了一个在登录时运行的计划任务,并添加了If-then-else语句以确保它只运行一次。这是我的代码集执行策略无限制$name=(Get-WmiObject win32_bios).SerialNumber.Trim()$oldname=(Get-WmiObject win32_computersystem).name.Trim()IF($oldname-eq$name){Exit}Else{Rename computer-ComputerName$oldname-NewName“$name”-强制启动睡眠-s 5重新启动计算机}在输入if-else语句后,脚本不再工作,有什么想法吗?