Powershell使用备用凭据编辑HKLM注册表

时间:2015-07-20 07:48:21

标签: powershell registry

尝试使用Set-ItemProperty使用备用管理员凭据设置HKLM注册表,但我收到错误消息“提供程序不支持使用凭据。”以标准最终用户身份运行此脚本时,该用户将无法编辑我们想要编辑的HKLM值。

$RegKey1 ='HKLM:\SOFTWARE\Microsoft\Office\Outlook\Addins\Workshare.Client.OutlookFormUI.AddinModule'

$username = "LocalAdmin"
$password = "Passw0rd"
$AdminCred = New-Object System.Management.Automation.PSCredential -ArgumentList @($username,(ConvertTo-SecureString -String $password -AsPlainText -Force))

Set-ItemProperty -Path $RegKey1 -Name "LoadBehavior" -Value 2 -Credential $AdminCred

2 个答案:

答案 0 :(得分:1)

解决方案是创建一个包含所有所需HKLM更改的reg文件,并使用带-credentials参数的start-process来执行reg.exe。

SQL> select t1.parentid
 2          , lpad(' ', level*2)||t2.childid as childid
 3          , level
 4   from t1
 5      left join t2 on t1.parentid=t2.parentid
 6   connect by prior t2.childid = t2.parentid
 7   start with t1.parentid is not null
 8   order by t1.parentid
 9   /

PARE CHILDID         LEVEL
---- ---------- ----------
P01    C01               1
P01    C02               1
P01    P03               1
P01    P04               1
P02                      1
P03      C03             2
P03    A01               1
P03    C03               1
P03      A01             2
P04      A02             2
P04    A02               1

11 rows selected.

SQL> 

答案 1 :(得分:0)

来自Get-Help Set-ItemProperty -Detailed:

  

-Credential指定有权执行此操作的用户帐户。默认为当前用户。

     

键入用户名,例如" User01"或" Domain01 \ User01",或输入   PSCredential对象,例如由Get-Credentia l生成的对象   小命令。如果键入用户名,系统将提示您输入密码。

     

安装的任何提供程序都不支持此参数   Windows PowerShell。

Get-PSProvider | FT -AutoSize

Name        Capabilities                       Drives
----        ------------                       ------
Registry    ShouldProcess, Transactions        {HKLM, HKCU}
Alias       ShouldProcess                      {Alias}
Environment ShouldProcess                      {Env}
FileSystem  Filter, ShouldProcess, Credentials {C, D, E}
Function    ShouldProcess                      {Function}
Variable    ShouldProcess                      {Variable}
Certificate ShouldProcess                      {Cert}

(文件系统提供商具有自PS 3.0以来的凭据和功能)

您可以看到,注册管理机构提供商并不支持凭据。此参数仅适用于将使用Set-ItemProperty通用命令的其他自定义提供程序,并且可能会添加'凭据'支持他们自己的连接远程计算机的方式。

如果您想实现目标,请使用PS Remoting,WMI,远程注册表PowerShell模块或Jerry Lai建议。