2012-05-03 30 views
7

Tôi đang cố gắng chạy tập lệnh yêu cầu đầu vào Quản trị viên để xử lý một số thứ nhất định. Thay vì chạy tập lệnh không thành công, tôi đang cố gắng bẫy lỗi và đưa nó trở lại vào Thông tin đăng nhập, nhưng tôi không thể tìm thấy lệnh tôi có thể vượt qua Thông tin đăng nhập quản trị viên cục bộ với Bẫy. Có ai có bất cứ điều gì có thể làm việc?Powershell Để kiểm tra thông tin đăng nhập quản trị viên địa phương

Tôi đã tìm thấy MANY sẽ kiểm tra thông tin đăng nhập miền nhưng đây là tài khoản quản trị LOCAL.

Để làm rõ, tôi đang sử dụng:

$Cred = Get-Credential

tôi cần phải xác minh đầu ra từ đó là chính xác và có quyền truy cập quản trị để chạy công cụ tiếp tục xuống trong kịch bản.

Giải pháp công tác (Nhờ User978511)

$Cred = Get-Credential 
$Computer = (gwmi Win32_ComputerSystem).Name 
$User = $Cred.Username 
$Pass = $Cred.GetNetworkCredential().Password 
$Users = ("$Computer"+"$User") 

Add-Type -assemblyname System.DirectoryServices.AccountManagement 
$DS = New-Object System.DirectoryServices.AccountManagement.PrincipalContext([System.DirectoryServices.AccountManagement.ContextType]::Machine) 
$DS.ValidateCredentials($Users, $pass) 

if ($Result -ne "True") 
{ 
<Perform Tasks Here> 
} 

Trả lời

3

này sẽ đưa bạn trở quản trị viên địa phương (câu trả lời khác có lẽ là phù hợp hơn ở đây):

$group =[ADSI]"WinNT://./Administrators" 
$members = @($group.psbase.Invoke("Members")) 
$admins = $members | foreach {$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)} 

Và điều này sẽ kiểm tra thông tin:

Add-Type -assemblyname system.DirectoryServices.accountmanagement 
$DS = New-Object System.DirectoryServices.AccountManagement.PrincipalContext([System.DirectoryServices.AccountManagement.ContextType]::Machine) 
$DS.ValidateCredentials("test", "password") 

Tất cả những gì bạn phải làm là kiểm tra xem thông tin đăng nhập có ổn không và người dùng đó là thành viên o f Quản trị viên nhóm

+0

Cảm ơn bạn, điều đó rất hữu ích, nhưng tôi cần phải xác minh tài khoản. Hãy để tôi xem lại: Tôi đang sử dụng: '$ Cred = Nhận-Credential' Tôi muốn kiểm tra xem những gì được nhập hợp lệ và sẽ có quyền Quản trị để thực hiện các tác vụ còn lại. – Steve

+0

@Steve xem cập nhật của tôi –

+0

Cảm ơn, bản cập nhật đó hoạt động tốt nếu tôi nhập tên người dùng và mật khẩu. Làm việc trên một cách ngay bây giờ để có thể kéo thông tin từ $ Cred vào các trường đó. – Steve

4
function Is-Current-User-Admin 
{ 
    return ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator") 
} 
+0

Mmmh. Sau khi đọc chỉnh sửa của bạn, đó không phải là những gì bạn muốn. Tuy nhiên, có thể có một số bản nhạc để theo dõi bạn tại đây: http://blogs.technet.com/b/heyscriptingguy/archive/2011/05/11/check-for-admin-credentials-in-a-powershell-script .aspx –

+0

Cảm ơn David. Trong khi tôi đánh giá cao đề xuất, tôi đã thấy trang web đó và tôi đã không thể làm việc nhiều từ đó. Đó là một kịch bản rất hữu ích để kiểm tra người dùng hiện tại tuy nhiên. – Steve

Các vấn đề liên quan