J'automatise la modification de mots de passe sur des cibles PowerShell distantes à l'aide d'une commande ADSI que j'envoie via Invoke-Command
. J'utilise la commande PowerShell suivante pour envoyer la commande ADSI à la machine distante:Variables au sein de la commande ADSI sur la cible PowerShell distante
Invoke-Command -ComputerName $computer -ScriptBlock {
(([ADSI]“WinNT://localhost/Administrator”).SetPassword($new_password)).SetInfo
} -Credential $mycred
Tout fonctionne, sauf pour la variable $new_password
. Si j'entre une chaîne directement dans la commande ADSI (dans la méthode SetPassword()
), le mot de passe est modifié avec succès sur le client distant. Toutefois, si j'utilise la variable $new_password
à la place, le mot de passe administrateur sur le client distant est défini comme vide. Toutes les autres variables, par exemple $computer
et $mycred
semblent fonctionner correctement dans l'ensemble de la commande Invoke-Command
, mais ce n'est qu'un seul $ new_password qui ne fonctionne pas. Même si je fais ce qui suit:
$new_password = "mypassword"
Invoke-Command -ComputerName $computer -ScriptBlock {
(([ADSI]“WinNT://localhost/Administrator”).SetPassword($new_password)).SetInfo
} -Credential $mycred