2013-11-11 3 views
3

Я использовал Powershell To Check Local Admin Credentials как основу для этого фрагмента и столкнулся с проблемами. (не хотел нить)Powershell - локальная проверка верификации

Add-Type -AssemblyName System.DirectoryServices.AccountManagement 
$pc = New-Object System.DirectoryServices.AccountManagement.PrincipalContext('machine',$entry) 
if($pc.ValidateCredentials("secretadmin", "secretpassword")){Write-host "good"}else{write-host "bad"} 

он работает около 50 процентов времени. остальное время, я получаю эту

Exception вызова «ValidateCredentials» с «2» аргумент (ы): «Несколько подключений к серверу или разделяемым ресурсам одним пользователем, с использованием более чем одного пользователя имя, не допускается. Отключите все предыдущие подключения к серверу или разделяемым ресурсам и повторите попытку.

, который напоминает мне о пакетных сценариев с использованием чистого использования для проверки учетных данных, где мы только необходимые для удаления сетевой диск, чтобы исправить проблема, поскольку нет сохраненного объекта, о котором я знаю, im unsure, как очистить этот вход в систему. и ничего не видел

В принципе, мы строим сотни серверов для больниц и должны обеспечить соответствие политикам, проверка этих учетных данных является лишь частью этого, но это то, где у меня проблемы.

Любая помощь была бы принята с благодарностью. В качестве дополнительной заметки перед этими вопросами. учетные данные верны, они жестко закодированы в скрипте, я могу получить сбой и немедленно войти в систему через RDP и psexec с теми же учетными данными, которые вызывают ошибку. брандмауэр позволяет любому из моего хоста в пункт назначения.

ответ

2

PrincipalContext реализует IDisposable поэтому я рекомендую делать это:

Add-Type -AssemblyName System.DirectoryServices.AccountManagement 
$pc = New-Object DirectoryServices.AccountManagement.PrincipalContext('machine',$entry) 

try { 
    if($pc.ValidateCredentials("secretadmin", "secretpassword")) { 
     Write-host "good" 
    } 
    else { 
     Write-host "bad" 
    } 
} 
finally { 
    $pc.Dispose() 
} 
Смежные вопросы