[英]Powershell - local credential verification
我使用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%的時間。 剩下的時間,我明白了
使用“2”參數調用“ValidateCredentials”的異常:“不允許同一用戶使用多個用戶名與服務器或共享資源建立多個連接。斷開以前與服務器或共享資源的所有連接,再試一次。
這讓我想起了使用net use驗證憑據的批處理腳本,我們只需要刪除映射驅動器來解決問題。 因為沒有我知道的保存對象,我不確定如何清除此登錄。 我檢查登錄用戶,什么也沒看見
基本上,我們正在為醫院建立數百台服務器,並且需要確保遵守政策,檢查這些憑據只是其中的一部分,但這是我遇到問題的地方。
任何幫助將不勝感激。 在提出這些問題之前,請注意一下。 憑證是正確的,它們在腳本中是硬編碼的,我可以收到故障,並立即通過RDP和psexec使用相同的憑據登錄錯誤。 防火牆允許從我的主機到目的地。
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()
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.