Dans le cadre d'un refactoring énorme, j'ai supprimé quelques classes et enums en double. J'ai déplacé les espaces de noms et restructuré tout pour être plus facile à maintenir dans le futur.Comment insérer du texte après une ligne spécifique dans des fichiers utilisant PowerShell?
Tous les changements ont déjà été scriptés à l'exception d'une chose. J'ai besoin d'insérer un espace de noms de contrat de données dans chaque fichier qui utilise un autre espace de noms si l'espace de noms de contrat de données n'a pas encore été inséré.
Le code que j'ai pour le moment ne fonctionne pas mais c'est en quelque sorte ce dont j'ai besoin.
function Insert-Usings{
trap {
Write-Host ("ERROR: " + $_) -ForegroundColor Red
return $false
}
(Get-ChildItem $base_dir -Include *.asmx,*.ascx,*.cs,*.aspx -Force -Recurse -ErrorAction:SilentlyContinue) | % {
$fileName = $_.FullName
(Get-Content $fileName) |
Foreach-Object
{
$_
if ($_ -cmatch "using Company.Shared;") {
$_ -creplace "using Company.Shared;", "using Company.Common;"
}
elseif ($_ -cmatch "using Company") {
#Add Lines after the selected pattern
"using Company.Services.Contracts;"
}
else{
$_
}
}
} | Set-Content $fileName
}
Edit: Le code tend à la sortie (remplacer l'ensemble avec- de fichiers) états "à l'aide de Company.Services.Contracts".
Échec? Quel est le message d'erreur? Ou fait-il quelque chose de différent de ce que vous voulez? –
Désolé de ne pas être assez clair dans la question originale. Je vais mettre à jour avec quelques informations supplémentaires. – mhenrixon