J'essaie d'écrire un script qui génère de nouveaux GUID lors de la recherche d'une correspondance. Mon problème est que je continue d'obtenir le même GUID généré pour tous les matches. Comment faire ceci sans générer le même GUID pour toutes les correspondances?Comment générer des règles uniques pour chaque correspondance
$testString = @"
[assembly: Guid Should Replace]
[assembly: Guid Should Replace]
[assembly: Guid Should Replace]
"@
#expected output
#[assembly: "unique guid"]
function ReplaceWithNewGuid {
param($content)
$retval = ($content -ireplace '(?m)(\[assembly: Guid.*$)+', "[assembly: Guid(`"$([guid]::NewGuid())`"]`)")
return $retval
}
ReplaceWithNewGuid($testString)
Exemple de sortie réelle:
[assembly: Guid ("29e784aa-ba4a-4a45-85b8-d6b52916b539"])
[assembly: Guid ("29e784aa-ba4a-4a45- 85b8-d6b52916b539 "])
[assembly: Guid (" 29e784aa-ba4a-4a45-85b8-d6b52916b539" ])
Update
La réponse de @Mathias R. Jessen m'a aidé à obtenir ce dont j'avais besoin. Je pensais que je pourrais le faire dans PowerShell sans utiliser les bibliothèques de framework. Net mais, cela fonctionne comme prévu.
function ReplaceWithNewGuid {
param($content)
$retval = [regex]::Replace($testString, '(?m)(\[assembly: Guid.*$)+', {param($m) return "[assembly: Guid(`""+ (New-Guid).Guid + "`")]"}, 'IgnoreCase')
return $retval
}
[guid] :: NewGuid() devrait toujours générer une valeur unique ... c'est le script complet? –
L'interpolation de chaîne se produit avant l'exécution de votre commande. Vous générez donc le GUID à remplacer par une fois, puis tous les remplacements ont lieu. Je pense que le fait que chaque valeur soit unique va être beaucoup plus complexe. – BenH
Désolé, mais quel '[assembly: Guid ...]' devrait être remplacé? –