none
Sécurité avec Powershell RRS feed

  • Question

  • Bonjour à tous,

    Débutant en PowerShell, je n'arrive pas à me sortir de mon erreur, qui j'imagine n'est pas très grande.

    Le contexte est le suivant: je dois à l'aide d'un script, récupérer une clé bien spécifique dans la base de registre de chaque ordinateur (il y en a plus d'une centaine pour la petite info). Afin de renseigner ces ordinateurs, j'utilise nmap qui me crée un fichier .xml qui va me dire toutes les stations qui sont connectées. Ensuite, je vais comparer cette clé avec la bonne clé, si ce n'est pas la même l'ordinateur est éjecté du réseau, si c'est la même il accède au réseau.

    Pour la théorie, cela s'arrête là.

    Pour la pratique, j'ai beaucoup plus de mal car en testant avec un petit fichier qui contient trois noms d'ordinateurs (+1 que l'on nomera tout bonnement "intrus"), l'intrus récupère quand même la clé de registre qui ne lui appartient pas. Je ne sais pas trop comment faire, voici le début de mon script pour récupérer les clés dans la base de registre:

    foreach ($client in gest-content $rep\liste_client.txt) {
    $version = [Microsoft.Win32.RegistryKey]::OpenRemteBaseKey('LocalMachine',$client).OpenSubkey('...\...\...\Complements').GetValue('Hkcu')
    "$client        $version" | Out-File $repm\Registre_verif.txt -Append -encoding ASCII

    Il se peut très certainement que j'ai une erreur dans mon code, n'hésitez pas à me lyncher, je suis mauvais en PowerShell.

    Je vous remercie

    mercredi 30 janvier 2013 10:35

Réponses

  • C'est normal, si la methode ne ramene rien, $version garde l'ancienne valeur.

    Idéalement tu n'as pas besoin de $version tu peux directement | le retour de ta méthode dans un Out-File

    [Microsoft.Win32.RegistryKey]::OpenRemteBaseKey('LocalMachine',$client).OpenSubkey('...\...\...\Complements').GetValue('Hkcu')  | Out-File $repm\Registre_verif.txt -Append -encoding ASCII



    mercredi 30 janvier 2013 15:05
  • Au contraire, vous pouvez utiliser un try catch pour capturer les erreurs et appliquer un traitement particulier (type : sortie dans un fichier d'erreur).

    try {

       mon code

    }

    catch { ma gestion des erreurs }

    Vous pouvez avoir plus d'information avec

    help about_Try_Catch_Finally

    jeudi 31 janvier 2013 09:58

Toutes les réponses

  • C'est normal, si la methode ne ramene rien, $version garde l'ancienne valeur.

    Idéalement tu n'as pas besoin de $version tu peux directement | le retour de ta méthode dans un Out-File

    [Microsoft.Win32.RegistryKey]::OpenRemteBaseKey('LocalMachine',$client).OpenSubkey('...\...\...\Complements').GetValue('Hkcu')  | Out-File $repm\Registre_verif.txt -Append -encoding ASCII



    mercredi 30 janvier 2013 15:05
  • Ok, je vais essayer sans ajouter $version.

    Et dans les cas où il n'y a aucune réponse, comment je peux faire pour afficher un message d'erreur sur la ligne correspondante ou bien transférer le nom de l'ordinateur dans un fichier d'exclusion ?

    J'ai entendu parler des "trap", mais j'ai des doutes sur son utilité ici.

    jeudi 31 janvier 2013 07:23
  • Au contraire, vous pouvez utiliser un try catch pour capturer les erreurs et appliquer un traitement particulier (type : sortie dans un fichier d'erreur).

    try {

       mon code

    }

    catch { ma gestion des erreurs }

    Vous pouvez avoir plus d'information avec

    help about_Try_Catch_Finally

    jeudi 31 janvier 2013 09:58
  • Bonsoir,

    J'imagine que le sujet n'est plus d'actualité, mais au cas ou ...
    Votre premier code est incomplet. Il manque la fermeture "}".
    Vous aviez fermé de quelle manière et à quel endroit ? 
    Cordialement

    mardi 11 novembre 2014 18:22