如何访问 Get-Child Registry 输出的属性
How to access properties of Get-Child Registry output
使用下面的代码,我填充了 Name
& LastLogon
,但没有填充 ProfilePath
。
Add-RegKeyMember
是 https://gallery.technet.microsoft.com/scriptcenter/Get-Last-Write-Time-and-06dcf3fb .
我尝试使用 $Profile.Properties.ProfileImagePath
、$Profile.Name.ProfileImagePath
和其他方法访问 ProfileImagePath
,但它们都 return 为空(可能为空)。这个看似对象到底是如何使这些属性可用的?
$Profiles = get-childitem "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" | Add-RegKeyMember
foreach($Profile in $Profiles)
{
$ThisProfileInfo = @{Name=$Profile.Name;
LastLogon=$Profile.LastWriteTime;
ProfilePath=$Profile.ProfileImagePath}
$Profile
}
Name Property
---- --------
S-1-5-18 Flags : 12
ProfileImagePath : C:\WINDOWS\system32\config\systemprofile
RefCount : 1
Sid : {1, 1, 0, 0...}
State : 0
这是因为 [Microsoft.Win32.RegistryKey] 对象 returns 属性为字符串数组。您应该简单地从对象本身检索值 ProfileImagePath :
ProfilePath=$Profile.GetValue("ProfileImagePath")
请查看以下对脚本的调整。
您可以使用GetValue
.
方法拉取属性的子值
我还调整了存储每次迭代和输出值 post 的方式 foreach
循环,因为上面的示例将只输出循环之前的每个 $profile
.
我没有用 Add-RegKeyMember
进行测试,因此我无法确认这是否会拉动 LastWriteTime
属性,但我可以确认这会拉动 [=16] =] 属性.
$Profiles = get-childitem "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" | Add-RegKeyMember
$ProfileData = @()
foreach($Profile in $Profiles){
$ThisProfileInfo = $null
$ThisProfileInfo = @{Name=$Profile.Name;
LastLogon=$Profile.GetValue("LastWriteTime");
ProfilePath=$Profile.GetValue("ProfileImagePath")}
$ProfileData += $ThisProfileInfo
}
$ProfileData
使用下面的代码,我填充了 Name
& LastLogon
,但没有填充 ProfilePath
。
Add-RegKeyMember
是 https://gallery.technet.microsoft.com/scriptcenter/Get-Last-Write-Time-and-06dcf3fb .
我尝试使用 $Profile.Properties.ProfileImagePath
、$Profile.Name.ProfileImagePath
和其他方法访问 ProfileImagePath
,但它们都 return 为空(可能为空)。这个看似对象到底是如何使这些属性可用的?
$Profiles = get-childitem "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" | Add-RegKeyMember
foreach($Profile in $Profiles)
{
$ThisProfileInfo = @{Name=$Profile.Name;
LastLogon=$Profile.LastWriteTime;
ProfilePath=$Profile.ProfileImagePath}
$Profile
}
Name Property
---- --------
S-1-5-18 Flags : 12
ProfileImagePath : C:\WINDOWS\system32\config\systemprofile
RefCount : 1
Sid : {1, 1, 0, 0...}
State : 0
这是因为 [Microsoft.Win32.RegistryKey] 对象 returns 属性为字符串数组。您应该简单地从对象本身检索值 ProfileImagePath :
ProfilePath=$Profile.GetValue("ProfileImagePath")
请查看以下对脚本的调整。
您可以使用GetValue
.
我还调整了存储每次迭代和输出值 post 的方式 foreach
循环,因为上面的示例将只输出循环之前的每个 $profile
.
我没有用 Add-RegKeyMember
进行测试,因此我无法确认这是否会拉动 LastWriteTime
属性,但我可以确认这会拉动 [=16] =] 属性.
$Profiles = get-childitem "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" | Add-RegKeyMember
$ProfileData = @()
foreach($Profile in $Profiles){
$ThisProfileInfo = $null
$ThisProfileInfo = @{Name=$Profile.Name;
LastLogon=$Profile.GetValue("LastWriteTime");
ProfilePath=$Profile.GetValue("ProfileImagePath")}
$ProfileData += $ThisProfileInfo
}
$ProfileData