ユーザーの資格情報を確認するWindowsコマンドラインユーティリティはありますか?


19

Windowsプラットフォームで、資格情報を確認するために(または、アカウントが無効になっている、存在しない、または期限が切れているというエラーを表示するためにusernamepassword domain nameを渡すことができるコマンドラインユーティリティはありますか?


2
なぜ自分以外の誰かの資格情報を検証する必要があるのでしょう。信頼できる立派なSysAdであるため、他の誰かの資格情報を知る必要はありません(おそらく、rootまたはDomain Adminアカウントを除く)。
-gWaldo

6
@gWaldo:私は、既存のマシンアカウントの資格情報をユーザーに要求するインストーラプログラムを作成するソフトウェアエンジニアとしてここに来ました。その後、コードレベルのWin32 API偽装呼び出し用に保存(暗号化)します。この質問と回答は関連性があり有用であり、正当であることがわかりました。
マイクアトラス

1
ユーザーにデフォルトのパスワードを設定し、変更するように指示しました。数週間後、誰が持っているか、持っていないかを知りたい。
マークベリー14年

@MarkBerryでは、ユーザープロファイルのチェックボックスをオンにして、次回のログオン時にパスワードの変更を強制する必要があります。
クレイグ

2
@Craigは、ログイン時にパスワードを強制的に変更しても、1週間または1か月後にログインしたことを保証しません。コマンドラインから確認する方法が必要です。ネットワークレベル認証が有効な場合、パスワードの強制変更により、リモートユーザーがロックアウトされることもあります。また、会社(顧客)がパスワードの変更を強制するよりも柔らかいタッチを必要とする場合があります。
マークベリー

回答:


14

このnet useコマンドを使用して、コマンドラインでユーザー名とパスワードを指定します(フォームnet use \\unc\path /user:username passwordで、errorlevel返されたものをチェックして、資格情報が有効かどうかを確認します)。

このrunasコマンドも機能しますが、出力をテストするのが難しくなります。

アカウントの存在についてクレデンシャルをテストするには、net userまたはを使用しdsqueryます。このnet userコマンドでは、アカウントがロックアウトされているかどうかはわかりませんlockoutTimeが、ユーザーアカウントの属性を照会すると、そのことがわかります。


7
runas /user:username cmdusername有効なパスワードを入力し、そのユーザーがこのコンピューターにログインできるかのように、新しいコマンドラインウィンドウが開きます。通常、シェルを開いて、検索できる個人情報に基づいてパスワードがデフォルトのままであることをテストします。
PsychoData

13

Powershellの場合:

Function Test-ADAuthentication {
    param($username,$password)
    (new-object directoryservices.directoryentry "",$username,$password).psbase.name -ne $null
    }

PS C:\> Test-ADAuthentication "dom\myusername" "mypassword"
True
PS C:\>

リファレンス:https : //stackoverflow.com/questions/7663219/how-to-authenticate-an-user-in-activedirectory-with-powershell


ObjectNotFound: (Test-ADAuthentication:String) [], CommandNotFoundExceptionここに来ました。これはドメインコントローラーでのみ機能し、ローカルアカウントでは機能しませんか?
-SaAtomic

1
@SaAtomic実行する前にセッションで関数を定義する必要があります。Test-ADAuthenticationはシェルに組み込まれていません
Canyon

1
あなたの答えについて私が本当に好きではないことの1つは、安全な文字列としてパスワードを読み込まないことです。プレーンテキストのパスワードは常に悪い考えです。$pass = Read-Host -assecurestring 'Enter password'
コロブキャニオン

1

ADがLDAPサーバーであるため、LDAPコマンドラインツールを使用してそれを「バインド」し、アクティブかどうかを確認できます。また、より高い特権を持つユーザーとしてバインドし、LDAP原則を使用してADを検索することもできます。

しかし、ちょっと-Powershellに問題はありません!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.