使用Powershell从价值中获取完整的注册表项路径

时间:2018-08-31 12:01:54

标签: powershell

所以我知道我在寻找什么值,但是我不知道该值的完整路径,因为它在

"HKLM\software\microsoft\windows nt\currentversion\profilelist",所以用户名/个人资料ID?

所以可以说我带一个叫“ computer_user_01” 的用户。也就是说,他的“ ProfileImagePath” "C:\users\computer_user_01"

因此,可以说该值的完整路径为:

`HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-3548956479-1181130828-1993911463-1001\ProfileImagePath\C:\users\computer_user_01".

所以我需要S-1-5-21-3548956479-1181130828-1993911463-1001\

如何从ProfileImagePath键的C:\Users\computer_user_01值中获取它?

现在我可以查询ProfileImagePath键,但是它给了我所有用户:

Get-ItemProperty -Path "hklm:\software\microsoft\windows nt\currentversion\profilelist\*\" -Name "ProfileImagePath" 

如何进一步指定它,可以这样说:

Get-ItemProperty -Path "hklm:\software\microsoft\windows nt\currentversion\profilelist\*\" -Name "ProfileImagePath" -Value "C:\users\computer_user_01" 

希望你能理解。

3 个答案:

答案 0 :(得分:2)

您可以尝试以下操作:

# First I get the SID    
$sid = (gwmi win32_useraccount | ? {$_.name -eq "computer_user_01"}).SID
# Then the value of the property you look for
(Get-ItemPropertyValue "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$sid\"   -Name "ProfileImagePath")

答案 1 :(得分:1)

好吧,您使用Get-ItemProperty -Path "hklm:\software\microsoft\windows nt\currentversion\profilelist\*\",返回的每个对象都有一个属性ProfileImagePathPSChildName,其中包含您需要的所有内容。

Get-ItemProperty -Path "hklm:\software\microsoft\windows nt\currentversion\profilelist\*\" | ? {$_.ProfileImagePath -eq "C:\users\computer_user_01"} | Select-Object -ExpandProperty PSChildName

返回所需的S-1-5-21-3548956479-1181130828-1993911463-1001

说明:

? {$_.ProfileImagePath -eq "C:\users\computer_user_01"}-用您的路径ProfileImagePath查找对象

Select-Object -ExpandProperty PSChildName-输出成人对象的名称

答案 2 :(得分:0)

您可以这样做:

(Get-ItemProperty -Path "hklm:\software\microsoft\windows nt\currentversion\profilelist\*\" -Name "ProfileImagePath" | 
 Where-Object { $_.ProfileImagePath -eq 'C:\users\computer_user_01' }).PSChildName