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