寻找If语句来检查用户是否是本地管理员

时间:2017-11-15 19:51:06

标签: powershell

目前与powershell非常相似,但学习我的方式。希望制作一个脚本来检查用户是否属于本地管理员组。目前我所拥有的将检查该帐户是否已创建并将创建该帐户并设置密码和组。

#add administrator account to local machine and add to administrator group

if (Get-WmiObject Win32_UserAccount -Filter "LocalAccount='true' and Name='administrator'")

{
    Write-Host "Account already exists"
    Write-Host "Skipping account creation of local account administrator"

}

else

{
    Write-Host "creating Local Admin Account"
    Write-Host "Please Set the password for the Local Admin account to create it"
    $Password = Read-Host -AsSecureString
    New-LocalUser "Administrator" -Password $Password -FullName "Help Desk Administrator" -Description "Local Admin account"
    Add-LocalGroupMember -Group Administrators -Member administrator
    Write-Host "account administrator created"
}

但是我需要进行错误检查,以确保该帐户已经存在且属于管理员组。

此处机器上本地管理员的当前状态是一团糟

1 个答案:

答案 0 :(得分:1)

如果您想了解当前用户是否已升级,请在PowerShell中使用以下两种方法:

  1. 使用#requires -RunAsAdministrator。如果当前用户未提升,这将阻止您的脚本运行。这需要PowerShell 3.0或更高版本。

  2. 在运行时询问系统当前用户是否被提升; e.g:

    $elevated = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
    
  3. 如果您正在寻找管理Administrators群组成员身份的方法,那么这是一个不同的问题。通常我会推荐组策略。