Slmgr /dlv donne une liste de licences sur n'importe quel ordinateur donné. L'un est pour le système d'exploitation, un est appelé une clé "ESU", il y en a d'autres en fonction de votre système. J'essaie de récupérer la première instance d'un ID d'activation qui vient après le texte "ESU", donc je ne récupère pas la clé d'activation du système d'exploitation ou une autre en fait.
Avec ce code, je pense qu'il récupère la deuxième instance de l'ID d'activation après le texte "ESU" ou il récupère simplement la mauvaise clé. Qu'est-ce que je fais de travers ? Merci d'avance.
$Slmgr = cscript.exe C:\Windows\system32\slmgr.vbs /dlv
switch -Regex ($slmgr | Out-String){'(?s)ESU.+Activation ID: (.+?)(?=\r?\n)'{
[PSCustomObject]@{
ActivationID = $Matches[1]
}
}
}
MISE À JOUR : Voici le résultat de slmgr /dlv ci-dessous. Il récupérait la première instance de l'ID d'activation de la clé du système d'exploitation, mais maintenant il récupère la bonne clé de la section ESU en utilisant (?s)ESU.+?Activation ID:\s*([^\r\n]+) ci-dessous dans les commentaires.
http://imgur.com/gallery/BIJcyqM
Mais, la sortie montre "Nom" et "Valeur", alors que j'ai juste besoin de ce numéro qui est obfusqué seul pour le traiter plus tard.
http://imgur.com/gallery/gVPMeHM
Mise à jour
Apparemment, sur certains systèmes $Slmgr est un tableau, pas une chaîne multiligne, donc -match ne fonctionne pas pour une regex multiligne.
J'ai essayé ceci, mais cela me donne beaucoup d'informations supplémentaires après la clé d'activation :
$Slmgr = cscript.exe C:\Windows\system32\slmgr.vbs /dlv
$Slmgr -match '(?s)ESU.+?Activation ID:\s*([^\r\n]+)'
$Slmgr -join "'r'n" -match '(?s)ESU.+?Activation ID:\s*([^\r\n]+)'
$ActivationID = $matches[1]
En regardant $ActivationID
, il a effectivement la clé d'activation au début, puis il montre "'r'n" que j'ai dans mon code, puis beaucoup d'autres choses après comme des clés d'installation, des infos de certificat. Je pense que mon -join dans mon code est en train de déranger quelque chose.
Des idées sur ce que je fais de travers ou une meilleure façon d'accomplir ce que j'essaie de faire ?