AD通過計算機名批量查詢計算機的當前登錄賬號

這幾天總是在工作中收到安全部門的郵件,好多機器需要重做系統,然後需要知道這些機器的使用人是誰,由於我們公司機器很多而且流動挺大的,沒有統計機器的設備表,需要我們去查詢到當前用戶的使用人。之前也有這種情況,但是都是零零散散的需求,這次因為疫情,好多時間沒有上班導致很多電腦在更新過程中出現問題,一下次都是幾十個計算機名需要查詢,一個一個查詢效率太低,所以就想做個腳本出來,下次可以方便點,這點在運維工作中其實很重要,特別是這種重複工作的,第一次消耗點時間,之後的工作會很簡單。

我是通過powershell做的腳本,下面我會將腳本分享出來,因為本人也是剛剛開始學習powershell,如果有更好的辦法,希望大神朋友可以私信我,讓我也學習下,我會發了小紅包表示感謝,哈哈。

以下就是我做的腳本:

Import-Module activedirectory

#導入AD模塊

$computeraccount= Get-Content D:\\count\\computer.csv

#獲取當前需要查詢的計算機列表文件

foreach ($currentcomputename in $computeraccount)

#根據計算機對象進行輪詢

{

if((Test-Connection -ComputerName $currentcomputename -count 1 -ErrorAction 0))

#測試計算機是否可以ping通,如果可以ping通,則繼續執行

{

$currentcomputename+"正測試IP連通性..."

$currentname= Get-ADComputer -Identity $currentcomputename|select -ExpandProperty name

#獲取計算機名,後面導出到表格裡方便點

$currentuser=(Get-WmiObject Win32_Process -Filter 'Name="explorer.exe"' -ComputerName $currentcomputename).getOwner() | Select -ExpandProperty User

#根據計算機當前計算機名

$computerproperty=New-Object psobject

#定義一個新PS 對象

$computerproperty| Add-Member -MemberType NoteProperty -Name "computerName" -Value $currentname

#給新表格增加一個叫computerName的列

$computerproperty| Add-Member -MemberType NoteProperty -Name "account" -Value "$currentuser"

#給新表格增加一個叫account的列


$computerproperty|Export-Csv -Encoding default -NoTypeInformation -append -Path d:\\count\\loginUser\\online.csv

#將數據導出為csv 文件,我們直接通過CSV 文件來獲取希望拿到的信息

$currentuser="暫時未有用戶登錄過"

#這個是為了防止有的計算機剛剛做個系統還沒有登錄名,導致表格裡會寫入上一條用戶名

}

else{

$currentcomputename=Get-ADComputer -Identity $currentcomputename|select -ExpandProperty name

$computerproperty=New-Object psobject

$computerproperty| Add-Member -MemberType NoteProperty -Name "offline" -Value $currentcomputename

$computerproperty|export-csv -Encoding Default -NoTypeInformation -Append -Path d:\\count\\loginUser\\offline.csv

}

}

我是將在線和不線的電腦分開導出的,測試過了,能達到我所需要的要求,希望能給到有需要的人。


分享到:


相關文章: