2012-05-03 3 views
7

Я пытаюсь запустить сценарий, требующий ввода Администратора для обработки определенных вещей. Вместо того, чтобы запустить скрипт неудачно, я пытаюсь уловить ошибку и вернуть ее обратно в учетные данные, но я не могу найти команду, с помощью которой я могу передать локальные полномочия администратора с помощью Trap. У кого-нибудь есть что-то, что может сработать?Powershell для проверки местных учетных данных администратора

Я нашел МНОГО, что проверит учетные данные домена, но это ЛОКАЛЬНАЯ учетная запись администратора.

Чтобы уточнить, я использую:

$Cred = Get-Credential

Мне нужно проверить вывод из этого правильно и имеет права администратора для запуска вещи дальше вниз в сценарии.

рабочего раствора (Благодаря 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> 
} 

ответ

3

Это вернет вам местные админы (другой ответ, наверное, лучше подходит здесь):

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

И это будет проверять учетные данные:

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

Все, что вам нужно сделать, это проверить, что учетные данные в порядке, и что пользователь является членом o f Группа админов

+0

Спасибо, это очень полезно, но мне нужно проверить учетную запись. Позвольте мне reexplain: Я использую следующие: '$ Cred = Get-Credential' Я хочу, чтобы проверить, что введенный в силе и будут иметь права администратора для выполнения остальных задач. – Steve

+0

@Steve см. Мое обновление –

+0

Спасибо, что обновление работает хорошо, если я вводим имя пользователя и пароль. Теперь работаем над тем, чтобы вытащить информацию из $ Cred в эти поля. – Steve

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

Mmmh. После прочтения вашего редактирования это не то, что вы хотите. Однако для вас могут быть некоторые следы: http://blogs.technet.com/b/heyscriptingguy/archive/2011/05/11/check-for-admin-credentials-in-a-powershell-script .aspx –

+0

Спасибо Дэвиду. Хотя я ценю эту рекомендацию, я уже видел этот сайт, и оттуда я не смог много работать. Это очень полезный скрипт для проверки текущего пользователя. – Steve

Смежные вопросы