2017-09-26 83 views
0

如何檢索管理員帳戶登錄的Active Directory中的計算機名稱及其IP地址?檢索通過AD登錄的計算機名稱admin帳戶

我可以檢索本地管理員帳戶與我下面的腳本:

function get-localadministrators { 
param ([string]$computername=$env:computername) 

$computername = $computername.toupper() 
$ADMINS = get-wmiobject -computername $computername -query "select * from win32_groupuser where GroupComponent=""Win32_Group.Domain='$computername',Name='administrators'""" | % {$_.partcomponent} 

foreach ($ADMIN in $ADMINS) { 
      $admin = $admin.replace("$computernamerootcimv2:Win32_UserAccount.Domain=","") # trims the results for a user 
      $admin = $admin.replace("$computernamerootcimv2:Win32_Group.Domain=","") # trims the results for a group 
      $admin = $admin.replace('",Name="',"") 
      $admin = $admin.REPLACE("""","")#strips the last " 

      $objOutput = New-Object PSObject -Property @{ 
       Machinename = $computername 
       Fullname = ($admin) 
       DomainName =$admin.split("")[0] 
       UserName = $admin.split("")[1] 
      }#end object 

[email protected]($objoutput) 
}#end for 

return $objreport 
}#end function 

但我想是的管理員登錄到計算機返回所有實例。這是可能的還是有什麼會返回類似的結果?

+0

你想要一個當前登錄的用戶是Active Directory管理員組成員的計算機列表嗎? Active Directory不存儲該信息。只有計算機本身知道誰登錄。您需要連接到域中的每臺計算機,並在該計算機上查詢在交互式會話或控制檯會話中登錄的用戶列表。 –

+0

剛剛列出IP /子網掩碼和計算機名稱怎麼樣?這是可行的嗎? @BaconBits –

+0

Active Directory並不知道有關IP地址或子網的任何信息。 AD騎在DNS之上。 DNS是你的主機名到IP地址查找的地方。但是,DNS並不知道有關子網的任何信息。再次,你不得不問客戶端計算機使用的是什麼子網掩碼。您可以設置AD站點和服務,也許可以通過這種方式獲取信息,但這樣做的目的是根據您使用的邏輯地址來描述物理結構,以便可以在WAN鏈路上管理站點間流量。 –

回答

1

你不可能僅憑AD就能做到這一點。 我們在這裏說幾臺電腦?不過,我會利用eventlog。每個登錄事件都存儲並具有登錄的用戶的SID(或觸發事件)。事件7001(登錄)是您正在尋找。

您可以以een XML格式檢索這些事件。該XML包含觸發事件的用戶的SID。您可以使用.NET翻譯功能將其轉換爲SamAccountName,或者您可以從AD中檢索所有SID,並以這種方式比較它們(因此可以使用hasbtable)。

我前段時間寫過一個腳本,使用了很多這些技術。 這是爲了看到用戶何時登錄和關閉並鎖定和解鎖他們的計算機。你可以在這裏找到一個博客帖子大約是:

https://cookiecrumbles.github.io/GetLogonEventViewer/

這博文還引用了GitHub上,你可以找到我所做的腳本。

隨着一些調整,你可以把它變成你需要的工具。