2012-05-03 16 views
7

Próbuję uruchomić skrypt, który wymaga danych wejściowych od administratora w celu przetworzenia pewnych rzeczy. Zamiast bezskutecznie uruchamiać skrypt, próbuję przechwycić błąd i wrzucić go z powrotem do Poświadczeń, ale nie mogę znaleźć polecenia, którym mogę przekazać Poświadczenia administratora lokalnego do Pułapki. Czy ktoś ma coś, co może działać?Powershell Sprawdzanie lokalnych uprawnień administratora

Znalazłem WIELE, które sprawdzi poświadczenia domeny, ale jest to LOKALNE konto administratora.

celu wyjaśnienia, używam:

$Cred = Get-Credential

muszę zweryfikować wyjście z który jest poprawny i ma uprawnienia administratora, aby uruchomić rzeczy w dalszej części skryptu.

roztwór roboczy (Dzięki 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> 
} 

Odpowiedz

3

Spowoduje to powrót lokalnych administratorów (inna odpowiedź jest chyba lepiej pasuje tutaj):

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

A to sprawdzić referencje:

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

Wszystko, co musisz zrobić, to sprawdzić, czy poświadczenia są w porządku, a użytkownik jest członkiem o f Grupa administratorów

+0

Dziękuję, to bardzo przydatne, ale muszę zweryfikować konto. Niech mnie reexplain: Używam następujący: '$ Cred = Get-Credential' chcę, aby sprawdzić, co jest wpisane jest ważna i będzie mieć uprawnienia administratora, aby wykonać pozostałe zadania. – Steve

+0

@Steve zobacz moją aktualizację –

+0

Dzięki, ta aktualizacja działa dobrze, jeśli wprowadzę nazwę użytkownika i hasło. Pracując teraz nad sposobem, by móc wyciągnąć informacje z $ Cred do tych pól. – Steve

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

Mmmh. Po przeczytaniu zmiany nie jest to, co chcesz. Być może jednak znajdziesz tu utwory: http://blogs.technet.com/b/heyscriptingguy/archive/2011/05/11/check-for-admin-credentials-in-a-powershell-script .aspx –

+0

Dzięki David. Chociaż doceniam to zalecenie, już widziałem tę stronę i nie mogłem z niej skorzystać. Jest to bardzo przydatny skrypt do sprawdzania aktualnego użytkownika. – Steve

Powiązane problemy