none
écriture commande powershell RRS feed

  • Question

  • Bonjour,

    Je souhaiterais savoir comment je peux obtenir le même résultat de ces lignes de script mais avec une écriture peut être plus simple. C'est surtout au niveau de la dernière ligne que cela me pose problème et qu'il doit certainement y avoir quelque chose de plus court.

    #Enable SMB v1 access : reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters /v AuditSmb1Access /t REG_DWORD -d 1 /f
    #Find which client connect to this computer with SMB v1 
    $query = Get-WinEvent -filterhashtable @{
        logname="Microsoft-Windows-SMBServer/Audit"
        ID = 3000
    } 
    $selectparam = @(
            @{n='Computer';e={$_.properties[0].value}},
            @{n='Time';e={$_.TimeCreated}}
        )    
    $query | Select-Object $selectparam | Sort-Object computer -Unique | Sort-Object time -Descending


    Merci de marquer comme reponses les interventions qui vous ont ete utile.

    mardi 28 juin 2022 18:10

Toutes les réponses

  • Bonjour Matteu31400

    Dans le principe c'est pas mal. La tâche qui est longue (la query) est stockée dans une variable.

    $selectparam = @(
            @{n='Computer';e={$_.properties[0].value}},
            @{n='Time';e={$_.TimeCreated}}
        )

    Est juste une manière "élégante d'utiliser Select-Object.

    Donc après $query | Select-Object $selectparam , tu n'as plus que les 3 propriétés sélectionnées (qui sont nommées Computer et Time).

    Sort-Object -Property Computer -Unique, je comprends : Trie pas Machine, et le Sort-Object time -Descending aussi. Ce que je ne comprends pas, c'est pourquoi trier 2 fois.On peut passer Sort-Object sur plusieurs propriétés.

    ex. :

    Sort-Object -Property computer, time -Unique -Descending

    Nota : A noter que dans la query, il va se taper tout le journal concerné ... et cela peut prendre du temps si le journal est gros. Avec une query comme la suivante tu peux ajouter entre 2 dates.

    $Date = Get-Date # Maintenant

    $StartTime=$Date.addDays(-2) # jusqu'à -2 jours ici

    $EndTime= $Date

    $Query = Get-WinEvent-FilterHashtable @{ LogName= <Ton journal>

    StartTime=$StartTime

    EndTime=$EndTime

    }

    tu trouveras d'autres exemples du même type dans mon github (ici)

    Cordialement

    mardi 28 juin 2022 19:01
  • Bonjour et merci pour le retour.

    C'est bien ces 2 sort-object qui m'embêtent oui.

    La raison c'est que si je combine les 2 ca ne fonctionne plus correctement et j'ai pleins de doublons car il considère comme unique le couple computer / time alors que moi c'est uniquement l'unicité sur computer que je souhaite :).

    Je trouve pas la "bonne" façon de faire.

    En ce qui concerne le fait d'avoir une date de début et de fin, je ne le souhaite pas car justement l'objectif est d'avoir la liste complète des requêtes SMB v1 effectué peu importe si elle date d'il y a 5h ou 20 jours.


    Merci de marquer comme reponses les interventions qui vous ont ete utile.


    jeudi 30 juin 2022 15:47
  • Bonjour,

    Je vois un possible autre problème, mais qui n'en est peut être pas un pour toi, comment es tu sur de remonter la dernière date ? car comme tu purge le nombre de ligne (-unique) avant le trie par date, c'est pas assuré d'avoir la dernière date pour chaque computer.



    • Modifié WiFiF mercredi 20 juillet 2022 14:20
    mercredi 20 juillet 2022 14:19
  • Comme cela vite fais, je pense qu'il faut traiter les dates pour chaque computer et donc une boucle.

    Exemple :

    ($query | Select-Object $selectparam | Sort-Object -Unique -Property Computer).computer | %{($test | Where-Object Computer -eq $_ | Sort-Object -Property Time -Descending)[0]}

    A simplifier et à rendre plus lisible sur plusieurs lignes

    Désolé la question était de rendre plus court .... :)

    • Modifié WiFiF mercredi 20 juillet 2022 14:56
    mercredi 20 juillet 2022 14:39