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>
}

2 ответов


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

$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") 

все, что вам нужно сделать, это проверить, что учетные данные в порядке и что пользователь является членом группы "администраторы"


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