【问题标题】:Powershell with elevated permissions through RunOnce通过 RunOnce 提升权限的 Powershell
【发布时间】:2014-05-07 13:46:18
【问题描述】:

我正在尝试使用 RunOnce 注册表项运行 powershell 脚本。我需要它以管理员身份运行,我可以让脚本运行,但我不能让它以提升的权限运行。这是我尝试过的,但它什么也没做。

我的代码:

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

有什么想法吗?

【问题讨论】:

  • 您在 ServerFault 上可能会有更好的运气。我会看一个登录触发的计划任务。 (technet.microsoft.com/en-us/library/cc748841.aspx)
  • 脚本将执行策略设置为不受限制,但它给出了一个错误,指出控制执行策略的注册表项被拒绝。如果我以管理员身份运行脚本,它就可以正常工作。至于登录触发的计划任务,这是用于对计算机进行映像,我希望它在使用 Windows 7 进行映像后的初始登录时执行此操作。登录触发的计划任务会更有效吗?
  • 你试过使用powershell.exe的执行策略参数吗?这将覆盖注册表中设置的执行策略并允许脚本运行。
  • 我不能说我已经尝试过了。至此,我创建了一个在登录时运行的计划任务,并添加了一个 If then else 语句以确保它只运行一次。这是我的代码 - Set-ExecutionPolicy Unrestricted $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" -force Start-Sleep -s 5 Restart-Computer}
  • 放入 if else 语句后脚本不再工作,有什么想法吗?

标签: powershell registry


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2021-06-22
    • 1970-01-01
    • 2018-08-03
    • 2011-03-12
    • 2014-04-26
    • 2019-09-24
    • 2016-05-08
    • 2016-06-05
    • 2013-05-31
    相关资源
    最近更新 更多