Différence entre deux scripts powershell

J'ai reçu un script censé parsingr les journaux d'events de 4 DC, en recherchant l'ID d'événement 4740 (locking de l'user). Il s'agit du script numéro 1. Maintenant, je me suis pensé, "Pourquoi parsingr tous les DC lorsque je peux numériser le journal du DC qui exécute le rôle PDC Emulator?" J'ai donc trouvé un autre script qui fait le même travail que plus rapidement … Maintenant j'ai 4 questions:

  1. Le PDCe a-t-il son propre journal ou est-ce le journal "général" DC?
  2. Les deux scripts font-ils reference à la même source?
  3. Pourquoi le premier prend environ une heure et le second prend environ 15 secondes?
  4. Pourquoi le deuxième script donne-t-il une sortie pendant seulement 8 heures?

Premier script:

$DD = get-date -format d $DD $L = get-eventlog -logname security -computername dc1, dc2, dc3, dc4 -after $DD | where {$_.eventid -eq 4740 } | ft -autosize timegenerated.replacementssortingngs $L $L >> locked.accounts.txt 

Deuxième script:

 $PDC = Get-ADDomainController -Discover -Service PrimaryDC Get-WinEvent -ComputerName $PDC -Logname Security -FilterXPath "*[System[EventID=4740 and TimeCreated[timediff(@SystemTime) <= 604800000]] and EventData]" | Select-Object TimeCreated,@{Name='User Name';Expression={$_.Properties[0].Value}},@{Name='Source Host';Expression={$_.Properties[1].Value}} 

Les deux scripts font-ils reference à la même source?

Oui, les deux font reference au journal de security. Mais votre get-eventlog ne tire que d'un DC.

  • get-eventlog -logname security -computername dc1, dc2, dc3, dc4
  • Get-WinEvent -ComputerName $ PDC -Logname Security

Pourquoi le deuxième script donne-t-il une sortie pendant seulement 8 heures?

Pas certain, je suppose que les fuseaux horaires. Avec le – -after vous êtes en train de filterr des trucs après la date que vous avez stocké en $DD , ce qui, je crois, va tourner à la journée entière la plus proche. Les données du journal des events, je crois, sont stockées avec la date + fois en UTC. En tous cas. Vous devrez utiliser la variable de date correcte qui spécifie le time que vous souhaitez, y compris le timezone.

$ DD = get-date -format d $ L = get-eventlog … -after $ JJ

Pourquoi le premier prend environ une heure et le second prend environ 15 secondes?

Bien, c'est en partie parce que vous interrogez une demi-douzaine d'ordinateurs au lieu d'un. Mais l'autre partie, c'est que Get-WinEvent est beaucoup plus rapide car il peut traiter beaucoup de filtrage sur l'ordinateur distant et envoyer uniquement les bits sur le réseau dont vous avez besoin. Le get-eventlog passe essentiellement toutes les inputs du journal des events à votre machine, qui fait ensuite le filtrage.

Voici quelques articles qui sont plus détaillés.

Le PDCe a-t-il son propre journal ou est-ce le journal "général" DC?

Je ne sais pas ce que vous requestz ici et / ou je ne sais pas.