Question Vérifier saisie password d'un compte AD

Plus d'informations
il y a 13 ans 9 mois #7112 par Régis LOUIS
Bonjour,

Lors de l'utilisation de la cmdlet Get-credential, comment est-il possible de vérifier que le mot de passe saisi correspond bien à celui du compte ?


Si je saisis un mot de passe différent, le script continue.

Voici le bout de code :
$cred = Get-Credential $env:USERDOMAIN\$env:USERNAME -ErrorAction SilentlyContinue

Autre souci
Si je clique sur le bouton annuler de la boite de dialogue, le paramètre -ErrorAction SilentlyContinue ne fonctionne pas. Get-credential n'accepte pas une valeur nulle.

Si vous avez une solution pour ces 2 problèmes je suis preneur.

Merci

Régis

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 9 mois #7113 par Arthur
La commande Get-credential ne vérifie pas la validité du mot de passe, enfin il me semble.
Le seul moyen à la limite serait de lancer une session WinRM par exemple et de vérifier si cela marche.

[code:1]
$cred = Get-Credential domaine\login
Enter-PSSession -ComputerName NomOrdi -Credential $cred 2>$null ; if(!$?) {write-host \"Mot de passe invalide\" }
else { write-host \"Mot de passe Valide\" ; exit-PSSession } }
[/code:1]

Message édité par: bilbao, à: 10/06/10 11:50<br><br>Message édité par: bilbao, à: 10/06/10 11:50

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 9 mois #7116 par Laurent Dardenne
bilbao écrit:

La commande Get-credential ne vérifie pas la validité du mot de passe, enfin il me semble.

Oui, il manque peut être un cmdlet Test-Credential ?
rnglouis écrit:

Si je saisis un mot de passe différent, le script continue.

Il n'y existe pas nativement d'association entre un script et un compte. Les cmdlets utilisent des credentials car en interne il appelent soit des API qui en nécessitent soit ils s'authentifient via une API dédié avant d'effectuer le traitement.
C'est plutot cette approche que tu recherches, il me semble.
rnglouis écrit:

Si je clique sur le bouton annuler de la boite de dialogue, le paramètre -ErrorAction SilentlyContinue ne fonctionne pas.

Il faut trapper l'exception, ou en v2 utiliser un bloc try/catch

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 9 mois #7127 par Régis LOUIS
Je ne m'attendais pas à une réponse si rapide.

Merci pour votre aide.

Le try catch marche à merveille.

Par contre le bout de code pour tester le mot de passe ne fonctionne pas. Si je saisie le bon mot de passe, il me répond toujours que le mot de passe est invalide.

Je précise que je travaille sur des OS Server Windows 2003 SP2, certaines fonctionnalités crédentials de Powershell 2.0 ne sont malheureusement pas utilisables.<br><br>Message édité par: rnglouis, à: 11/06/10 09:20

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 9 mois #7128 par Arthur
Bizarre, sur mon Windows XP en domaine ca marche nickel.
Mais il faut aussi savoir que mon code est incomplet car la création d'une session peut échouer pour plusieurs raisons par exemple si l'ordinateur distant n'a pas WinRM d'activé.
De plus le code n'est pas très \&quot;optimisé\&quot;, il vaudrait mieux faire mon test avec une commande n'utilisant pas WinRM.<br><br>Message édité par: bilbao, à: 11/06/10 09:55

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 9 mois #7129 par Régis LOUIS
Pour le test du mot de passe, je fais un net use sur le canal ipc$ du serveur sur lequel je l'exécute

Voici le code testant le mot passe et avec le try catch quand l'utilisateur appuie sur le bouton annuler de la boite de dialogue.

[code:1]try
{
while (!$testpwd)
{
$cred = Get-Credential $env:USERDOMAIN\$env:USERNAME
$user = $cred.GetNetworkCredential().UserName
$pwd = $cred.GetNetworkCredential().Password
net use \\$env:COMPUTERNAME\ipc$ /u:$user $PWD 2&gt;$null
if(!$?)
{
write-host \&quot;Mot de passe invalide\&quot;
$testpwd = $false
}
else
{
write-host \&quot;Mot de passe Valide\&quot;
net use \\$env:COMPUTERNAME\ipc$ /d | Out-Null
$testpwd = $true
}
}
}
catch
{
Write-Host \&quot;Action annulée par l'utilisateur. Sortie de script\&quot;
}[/code:1]

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.075 secondes
Propulsé par Kunena