J'ai besoin d'une petite aide.
Certains paramètres de registre ont été effectués par script de lots dans le passé sur plusieurs périphériques. Maintenant, j'ai besoin de vérifier que ces paramètres existent toujours ou non. P>
Je crée un script PowerShell et essaye d'obtenir la valeur de ce chemin. P>
ci-dessous sont les valeurs configurées dans le passé. Par script de lots. p> Vous pouvez voir que ces paramètres sont créés sous les utilisateurs de Hey et ont créé ntatuser.dat. P> PowerShell Command que j'essaie. P> Get-ItemPropertyValue : Cannot find path 'HKEY_USERS\defuser\Software\Policies\Microsoft\Internet Explorer\Control Panel ' because it does not exist.
At line:6 char:1
+ Get-ItemPropertyValue 'Registry::HKEY_USERS\defuser\Software\Policies ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (HKEY_USERS\defu...\Control Panel :String) [Get-ItemPropertyValue], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetItemPropertyValueCommand
3 Réponses :
La ruche HKEY_USERS n'est pas montée par défaut dans PowerShell.
Essayez ceci avant votre ligne de code: Il devrait faire le tour p> et corriger votre ligne de code avec: p> New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS
$SIDs = Get-ChildItem -Path HKU:\ -Name | Where-Object { ($_.Length -gt 8) -and ($_ -NotLike '*Classes*')}
ForEach($user in ($SIDs))
{
If((Get-ItemPropertyValue "HKU:\$($user)\Software\Policies\Microsoft\Internet Explorer\Control Panel" -Name HomePage -ErrorAction SilentlyContinue) -Eq 1)
{
Write-Host 'HomePage is OK'
}
Else
{
Write-Host 'HomePage is not OK'
}
}
Remove-PSDrive -Name HKU
Je reçois toujours l'erreur. Get-itemPropertyValue: Impossible de trouver le chemin 'HKU: \ DÉFUSER \ Software \ Stratégies \ Microsoft \ Internet Explorer \ Control Panel' Parce qu'il n'existe pas. À la ligne: 4 Char: 1 + get-itemPropertyvalue 'HKU: \ DÉFUSER \ Software \ Stratégies \ Microsoft \ Inter ... + ~~~~~~~~~~~~~~~~~~~~
J'ai supposé que vous savez ce qu'était défapeur. Alors qu'est-ce que vous voulez faire? Vérifiez cette valeur pour chaque utilisateur?
J'ai édité ma réponse afin d'analyser chaque SIDS sur le système et de vérifier si la page d'accueil de la propriété est égale à 1 ou non.
Ceci est un très bel article sur les utilisateurs HIVE: https://www.lifewire.com / HKEY-UTILANS-2625903
Ne pensez pas que la clé de défapeur existe dans cette ruche. Sauf si vous créez le vôtre, vous devez changer le chemin. Essayez le code ci-dessous. P>
#username
$Username = "DefUser"
#key without HIVE or SID to export e.g. SOFTWARE\Microsoft\Windows
$key = "Software\Policies\Microsoft\Internet Explorer\Control Panel"
#value in the key above to retrieve
$valuetoget = "HomePage"
### get sid from username
$User
$sid
try {
$User = New-Object System.Security.Principal.NTAccount($Username)
$sid = $User.Translate([System.Security.Principal.SecurityIdentifier]).value
}
catch {
Write-Output "Failed to get SID for username: $UserName."
return
}
#check whether the user hive is loaded
if (Test-Path "Registry::HKEY_USERS\$sid" -PathType Container) {
#it is loaded, check the key
if (Test-Path "Registry::HKEY_USERS\$sid\$key") {
Write-Output "The specified key was found under: $UserName."
$value = Get-ItemPropertyValue "Registry::HKEY_USERS\$sid\$key" -Name $valuetoget -ErrorAction SilentlyContinue
if ($value) {
Write-Output "The value of property $valuetoget is:$value"
} else {
Write-Output "The property $valuetoget was not found or is empty."
}
}
else {
Write-Output "The specified key does not exist under: $UserName"
}
}
Else {
#it isnt loaded, load it
& "$env:windir\system32\reg.exe" "LOAD HKU\TEMP `"$env:SystemDrive\Users\$UserName\NTUSER.DAT`""
#export the key if the key exists
if (Test-Path "Registry::HKU\TEMP\$key") {
Write-Output "The specified key was found under: $UserName."
$value = Get-ItemPropertyValue "Registry::HKU\TEMP\$key" -Name $valuetoget -ErrorAction SilentlyContinue
if ($value) {
Write-Output "The value of property $valuetoget is:$value"
} else {
Write-Output "The property $valuetoget was not found or is empty."
}
}
else {
Write-Output "The specified key does not exist under: $UserName"
}
#unload it
& "$env:windir\system32\reg.exe" "LOAD HKU\TEMP"
}
ci-dessous le code devrait vous donner une liste d'objets dans laquelle la valeur de registre pourrait être trouvée
Vous devez utiliser le SID de l'utilisateur et utiliser cela au lieu de
défact code> lors de la recherche de la ruche HKEY_USERS.@Theo merci pour le commentaire. Il pourrait y avoir plusieurs utilisateurs avec différents SID. Est-ce qu'il y a un autre moyen.
Nous n'avons jamais entendu parler de vous .. L'une des réponses données a-t-elle résolu votre problème? Si oui, veuillez considérer accepter en cliquant sur le ✓ Icône à gauche. Cela aidera les autres avec une question similaire la trouvant plus facilement.