2012-05-03 15 views
7

Ich versuche, ein Skript auszuführen, das Administrator-Eingaben benötigt, um bestimmte Dinge zu verarbeiten. Anstatt das Skript nicht erfolgreich ausführen zu lassen, versuche ich, den Fehler zu fangen und zurück in die Credentials zu werfen, aber ich kann keinen Befehl finden, den ich Local Admin Credentials mit einer Trap übergeben kann. Hat jemand etwas, das funktionieren könnte?Powershell zum Überprüfen lokaler Anmeldeinformationen

Ich habe viele gefunden, die Domänenanmeldeinformationen überprüfen, aber dies ist ein lokales Administratorkonto.

Um zu klären, ich bin mit:

$Cred = Get-Credential

Ich brauche die Ausgabe zu überprüfen aus, dass richtig ist, und Admin Zugriff hat Sachen weiter unten im Skript auszuführen.

Arbeitslösung (Dank 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> 
} 

Antwort

3

Dies wird Ihnen lokale Administratoren zurückgeben (eine andere Antwort ist wahrscheinlich besser passen hier):

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

Und dies überprüfen Anmeldeinformationen:

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

Alles, was Sie tun müssen, ist zu überprüfen, dass die Anmeldeinformationen in Ordnung sind und dieser Benutzer Mitglied ist o f Admins Gruppe

+0

Vielen Dank, das ist sehr nützlich, aber ich muss das Konto verifizieren. Lassen Sie mich reexplain: Ich verwende die folgenden: '$ Cred = Get-Credential' Ich möchte, dass überprüfen, was eingegeben wird gültig und muss Admin Rechte den Rest der Aufgaben auszuführen. – Steve

+0

@Steve sehe mein Update –

+0

Danke, das Update funktioniert gut, wenn ich den Benutzernamen und das Passwort eingeben. Ich arbeite jetzt an einem Weg, um die Informationen von $ Cred in diese Felder zu ziehen. – Steve

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

Mmmh. Nachdem du deine Bearbeitung gelesen hast, ist das nicht das was du willst. Es könnte jedoch einige Spuren für Sie folgen: http://blogs.technet.com/b/heyscriptingguy/archive/2011/05/11/check-for-admin-credentials-in-a-powershell-script .aspx –

+0

Danke David. Obwohl ich die Empfehlung zu schätzen weiß, hatte ich diese Seite schon gesehen und konnte von dort nicht viel arbeiten. Das ist ein sehr nützliches Skript, um den aktuellen Benutzer zu überprüfen. – Steve

Verwandte Themen