Je tente d'obtenir cette boucle ForEach pour rechercher une installation de logiciel spécifique sur un ordinateur en utilisant une recherche de registre. Pour une raison quelconque, il est seulement trouver un et pas les deux autres, même si je sais et je peux voir qu'ils sont installés. Qu'est-ce qu'un manqué.Logiciel PowerShell Search installé
Clear-Host
$Computers = hostname
$array = @()
foreach($pc in $computers){
$computername=$pc.computername
#Define the variable to hold the location of Currently Installed Programs
$UninstallKey="SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall"
#Create an instance of the Registry Object and open the HKLM base key
$reg=[microsoft.win32.registrykey]::OpenRemoteBaseKey('LocalMachine',$computername)
#Drill down into the Uninstall key using the OpenSubKey Method
$regkey=$reg.OpenSubKey($UninstallKey)
#Retrieve an array of string that contain all the subkey names
$subkeys=$regkey.GetSubKeyNames()
#Open each Subkey and use GetValue Method to return the required values for each
ForEach($Key in $subkeys) {
$thisKey=$UninstallKey+"\\"+$key
$thisSubKey=$reg.OpenSubKey($thisKey)
#If found set variable to True for used in report
if (($thisSubKey.GetValue("DisplayName") -like "CCleaner")) {Write-Host "CCleaner = True"}
Else {Write-Host = " False"}
if (($thisSubKey.GetValue("DisplayName") -like "*7-Zip*")) {Write-Host "7Zip = True"}
Else {Write-Host = " False"}
if (($thisSubKey.GetValue("DisplayName") -like "*.NET Framework*")) {Write-Host ".NET = True"}
Else {Write-Host = " False"}
}
}
Il trouve DotNet et son égale vrai, mais le 7-Zip et sont également installés CCleaner et à la place que je cherche. J'ai regardé ce code pendant un moment maintenant et je ne vois pas pourquoi.
Je sais que j'ai défini les ordinateurs pour nom d'hôte, je vais changer pour un fichier avec une liste d'ordinateurs. C'est juste pour le test en ce moment.
Merci d'avance.
OS 64 bits? Les chances sont que vous avez une application 32 bits et ils sont situés dans le WoW6432Node. Votre instruction CCLeaner '-like' n'a aucun caractère générique. Je suggère d'utiliser '-match' au lieu de' -like' et de supprimer les astérisques. Cela pourrait bien résoudre votre problème. Puisque le nom d'affichage de 7-Zip commence par 7-Zip, je ne me souviens pas si '-like' le trouvera si vous placez un astérisque devant le texte. match est mieux que comme à mon avis quand il peut être utilisé. – TheMadTechnician
Il s'agit d'un système d'exploitation 64 bits, je devrais peut-être répondre aux deux dans ce cas, j'ai ajouté les caractères génériques aux noms et supprimé l'instruction else. Jusqu'à présent, je pense, je vais continuer à tester les logiciels faux pour voir si les rapports en retour comme il se doit. Merci pour la réponse. –