在powershell中获取不带凭据提示的注册表项HKCU

在powershell中获取不带凭据提示的注册表项HKCU,powershell,Powershell,我以管理员的身份运行脚本,由于我是管理员,因此必须有一种方法可以获得我想要的,而无需PS向我询问用户凭据 这里是一个示例方法,让用户安装在本地的程序,我需要一个版本,它不会要求我输入密码 function Get-UserPrograms { Invoke-Command -ComputerName "DESKTOP" -Credential "DESKTOP\USER" -ScriptBlock { $regpath = "HKCU:\Software\Microsof

我以管理员的身份运行脚本,由于我是管理员,因此必须有一种方法可以获得我想要的,而无需PS向我询问用户凭据

这里是一个示例方法,让用户安装在本地的程序,我需要一个版本,它不会要求我输入密码

function Get-UserPrograms
{
    Invoke-Command -ComputerName "DESKTOP" -Credential "DESKTOP\USER" -ScriptBlock {
        $regpath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*"

        Get-ItemProperty $regpath |
        .{process{if($_.DisplayName -and $_.InstallLocation) { $_ } }} |
        Select-Object DisplayName, Publisher, InstallLocation |
        Sort-Object  DisplayName
    }
}

可能重复该链接中的解决方案要求输入密码,并运行新的powershell控制台,该控制台将尽快禁用。您是否考虑过使用
[Microsoft.Win32.Registry]
.NET类而不是使用
Invoke命令
?据我所知,通过
i-C运行某些调用时,您必须从提升的会话运行
Invoke命令
调用,或提供提升的凭据。这似乎内置于
I-C
中,您似乎已经找到了许多需要提升的此类通道之一。[grin]@JeffZeitlin是的,已经用
[Microsoft.Win32.RegistryHive]::CurrentUser
尝试过了,但是它不起作用<代码>[Microsoft.Win32.RegistryHive]::用户
完成了这项工作,我现在只需要编写一个函数来获取每个用户的
SID
编号,并且不再需要
Invoke命令
!谢谢你的建议!