Назад | Перейти на главную страницу

Использование командной строки, чтобы узнать, отключена ли локальная гостевая учетная запись данного компьютера

Мне нужно создать отчет, который показывает, что гостевая учетная запись отключена для данного списка компьютеров.

Как я могу использовать net user, PowerShell или любой другой широко используемый инструмент для этой цели?

Вот небольшая функция PowerShell, чтобы проверить это.

function Test-LocalAccountDisabled
{
    param (
        [string]
        $AccountName = 'Guest',
        [string[]]
        $ComputerName = $env:COMPUTERNAME
    )

    $AccountDisable=0x0002
    foreach ($Computer in $ComputerName)
    {
        [ADSI]$Guest="WinNT://$Computer/$AccountName,User"
        if ($Guest -ne $null)
        {
            New-Object PSObject -Property @{
                Disabled = ($Guest.UserFlags.Value -band $AccountDisable) -as [boolean]
                AccountName = $AccountName
                ComputerName = $Computer
            }
        }
        else
        {
            Write-Error "Unable to find $AccountName on $Computer."
        }
    }
}

Если у вас есть список компьютеров в текстовом файле, разделенный разрывами строки, вы можете сделать что-то вроде

Test-LocalAccountDisabled -ComputerName (get-content computers.txt)

PowerShell, вероятно, самый простой способ:

foreach ( $computer in (Get-Content computers.txt) ) {
  Get-WmiObject Win32_UserAccount -Computer $computer -Filter "Name = 'guest'" `
    | Select-Object __Server, Disabled
}

С помощью wmic в партии некрасиво, но тоже будет работать:

set query=useraccount where name^^="guest" get disabled

for /f %c in ('computers.txt') do (
  for /f "delims== tokens=2" %a in ('wmic /node:%c %query% /value') do (
    echo %c %a
  )
)

Сценарий Powershell с чем-то вроде этого должен помочь:

$Servers = Get-Content "C:\Path\To\File\With\Servers.txt"

foreach ($Server in $Servers)
{
    Get-WmiObject Win32_UserAccount -computername $Server -filter "LocalAccount=True AND` 
    Name='Guest'" | Select-Object Domain,Name,Disabled
}

Это будет читать список имен серверов из текстового файла и просматривать их в цикле, отображая запись для каждой отключенной гостевой учетной записи. Если вынуть AND Name=Guest, он покажет вам все отключенные учетные записи на каждой машине.