Есть ли простой способ определить, какая учетная запись пользователя использовалась для присоединения компьютера к домену?
Старый пост, но актуальный вопрос. К объекту-компьютеру будет прикреплен SID того объекта, который его создал. Для этого используйте ADSIedit. Кроме того, ведение журнала аудита AD: http://technet.microsoft.com/en-us/library/cc731607(v=ws.10).aspx
Найдите событие с кодом 645 в журнале событий безопасности на локальных контроллерах домена. Событие будет включать имя пользователя.
У вас должен быть настроен аудит событий для отслеживания этих событий.
Больше информации здесь: http://technet.microsoft.com/en-us/library/cc787268%28WS.10%29.aspx http://technet.microsoft.com/en-us/library/cc737542%28WS.10%29.aspx
Простым способом может быть проверка журналов либо на подключенном клиентском компьютере, чтобы увидеть, кто вошел в систему, когда компьютер был присоединен, либо на сервере, выступающем в качестве основного контроллера домена.
Если включен аудит событий, вы также можете увидеть там.
Я искал нечто подобное и не нашел однозначного ответа. Я нашел несколько обходных путей, которые могут помочь другим.
просмотрев журнал NetSetup.log в папке windows \ debug. Вот небольшой код, который вы можете запустить со своего компьютера:
$NoInfo = $null
$Offline = $null
$List = $null
#Get-Content unknowns.txt | foreach {
Get-ADComputer -Filter 'OperatingSystem -like "*Windows server*"' -Properties * | foreach {
$FQDN = $_.DNSHostName
$Path = "\\$FQDN\c`$\Windows\debug\NetSetup.log"
if (Test-Connection $FQDN -Count 1 -ErrorAction SilentlyContinue) {
if (Test-Path $Path) {
write-host "`n`nChecking $FQDN..."
$User = ($($(Select-String -Path $Path -Pattern "lpAccount: " -CaseSensitive) -split " ")[3])
$User
[array]$List += Write-Output $FQDN";"$User
}
else {[array]$NoInfo += $FQDN}
}
else {[array]$Offline += $FQDN}
#sleep 5
}
$list
В качестве альтернативы, если у вас есть сервер vCenter, вы можете просто попробовать следующее из VMware powerCLI. Человек, создавший виртуальную машину, вероятно, присоединил компьютер к домену.
В моей среде результаты были очень точными:
$servername = Read-host "Enter server name"
$Events = Get-VIEvent -Entity $servername -Types info -MaxSamples 999999999
foreach ($event in $events) {
$test = $true
if ($event.fullFormattedMessage -match "Deploying $servername on host") {
Write-Host ("`n$servername is created by User " + $event.username + " at: " + $event.createdTime)
Write-Host ("`nEvent Details:`n--------------`n" + $event.fullFormattedMessage)
$OwnerList += New-Object -TypeName psobject -Property @{Servername=$servername;Username=$event.username;CreationTime=$event.createdTime;EventMsg=$event.fullFormattedMessage;Estimated="No"}
$test = $false
}
elseif ($event.fullFormattedMessage -like "Clone of*completed") {
Write-Host ("`n$servername is created by User " + $event.username + " at: " + $event.createdTime)
Write-Host ("`nEvent Details:`n--------------`n" + $event.fullFormattedMessage)
$OwnerList += New-Object -TypeName psobject -Property @{Servername=$servername;Username=$event.username;CreationTime=$event.createdTime;EventMsg=$event.fullFormattedMessage;Estimated="No"}
$test = $false
}
elseif ($event.fullFormattedMessage -match "Creating $servername on host") {
Write-Host ("`n$servername is created by User " + $event.username + " at: " + $event.createdTime)
Write-Host ("`nEvent Details:`n--------------`n" + $event.fullFormattedMessage)
$OwnerList += New-Object -TypeName psobject -Property @{Servername=$servername;Username=$event.username;CreationTime=$event.createdTime;EventMsg=$event.fullFormattedMessage;Estimated="No"}
$test = $false
}
}
if ($test -eq $true) {
Write-Host "`nWarning: Unable to find the server owner" -BackgroundColor Yellow -ForegroundColor Black
Write-Host "Note: Following entries are estimates only." -BackgroundColor Yellow -ForegroundColor Black
Write-Host "Recommendations:"
$lastevent = (Get-VIEvent -Entity $servername -MaxSamples 999999999 | Select-Object -last 1)
if ($lastevent.username -ne $null -and $lastevent.username) {
Write-Host ("`n$servername is created by User " + $lastevent.username + " at: " + $lastevent.createdTime)
Write-Host ("`nEvent Details:`n--------------`n" + $lastevent.fullFormattedMessage)
$OwnerList += New-Object -TypeName psobject -Property @{Servername=$servername;Username=$lastevent.username;CreationTime=$lastevent.createdTime;EventMsg=$lastevent.fullFormattedMessage;Estimated="Yes"}
}
$events = $Events | sort CreatedTime
:loop foreach ($event in $events) {
$event.username
if ($event.username -ne $null -and $event.username) {
Write-Host ("`n$servername is created by User " + $event.username + " at: " + $event.createdTime)
Write-Host ("`nEvent Details:`n--------------`n" + $event.fullFormattedMessage)
$OwnerList += New-Object -TypeName psobject -Property @{Servername=$servername;Username=$event.username;CreationTime=$event.createdTime;EventMsg=$event.fullFormattedMessage;Estimated="Yes"}
break loop
}
}
}