Мне нужно создать отчет, который показывает, что гостевая учетная запись отключена для данного списка компьютеров.
Как я могу использовать 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
, он покажет вам все отключенные учетные записи на каждой машине.