J'ai un comportement étrange avec format-list. Lorsque je colle directement le code suivant dans l'interpréteur de commandes - tout fonctionne parfaitement :
@("Administrateur","UnUtilisateur","UnAutreUtilisateur") |% {
$uname = $_;
$u = gwmi win32_useraccount |? { $_.Name –eq $uname }
if (-not $u) {
write-host ("[-] "+ $uname + " n'existe pas!")
} else {
write-host ("[+] "+ $uname + ":")
$u
}
}
@("Administrateur","UnUtilisateur","UnAutreUtilisateur") |% {
$uname = $_;
gwmi win32_groupuser -computer . | select GroupComponent,PartComponent |? { $_.PartComponent -match ",Name=`""+$uname+"`""} | fl *
}
Cependant, lorsque je mets le même code dans une fonction, disons test, et que j'appelle test, PowerShell affiche une erreur à propos de format-list. Je n'arrive pas à comprendre pourquoi - peut-être que j'ai cherché du mauvais côté, mais je n'ai rien trouvé.
function test {
@("Administrateur","UnUtilisateur","UnAutreUtilisateur") |% {
$uname = $_;
$u = gwmi win32_useraccount |? { $_.Name –eq $uname }
if (-not $u) {
write-host ("[-] "+ $uname + " n'existe pas!")
} else {
write-host ("[+] "+ $uname + ":")
$u
}
}
@("Administrateur","UnUtilisateur","UnAutreUtilisateur") |% {
$uname = $_;
gwmi win32_groupuser -computer . | select GroupComponent,PartComponent |? { $_.PartComponent -match ",Name=`""+$uname+"`""} | fl *
}
}
Le message d'erreur affiché est :
out-lineoutput : L'objet de type "Microsoft.PowerShell.Commands.Internal.Format.FormatStartData" n'est pas valide ou pas dans la séquence correcte. Cela est vraisemblablement causé par une commande "format-list" spécifiée par l'utilisateur qui entre en conflit avec le formatage par défaut.
+ CatégorieInfo : InvalidData: (:) [out-lineoutput], InvalidOperationException
+ Identifiant d'erreur entièrement qualifié : ConsoleLineOutputOutOfSequencePacket,Microsoft.PowerShell.Commands.OutLineOutputCommand
Une capture d'écran du problème :