Get-Credential
を使用して作成したPowerShellのPSCrendential
オブジェクトがあるとします。PowerShell PSCredentialの検証
どのようにしてActive Directoryに対して入力を検証できますか?今、私はこの方法を見つけたが、私はそれは少し醜い感じることで
:
[void][System.Reflection.Assembly]::LoadWithPartialName("System.DirectoryServices.AccountManagement")
function Validate-Credentials([System.Management.Automation.PSCredential]$credentials)
{
$pctx = New-Object System.DirectoryServices.AccountManagement.PrincipalContext([System.DirectoryServices.AccountManagement.ContextType]::Domain, "domain")
$nc = $credentials.GetNetworkCredential()
return $pctx.ValidateCredentials($nc.UserName, $nc.Password)
}
$credentials = Get-Credential
Validate-Credentials $credentials
[2年後の編集、]今後の読者のために、Test-Credential
またはTest-PSCredential
が良いの名前であることに注意なぜならくださいValidate
が
私はPSCredentialsが認証プロバイダに依存していないことを理解しています(これは基本的にユーザー名とパスワードの単純なコンテナです)。 –
@SteveB特に、(IMO)マイクロソフトがAccountManagementを行う理由は、ADで働いている人にとっては、sysadminとdevelopperにとっては本当に一般的な作業です。ここでは、この作業を行うためにC#で使用されるさまざまな方法を見ることができます:http://stackoverflow.com/questions/290548/c-sharp-validate-a-username-and-password-against-active-directory –
実際には一般的な開発のベストプラクティスがここに適用されます。特に私はこの関数の複雑さを隠し、単に関数を呼び出すことができます:) –