2010-09-24 118 views
2

所以老闆要了電子表格,將顯示他在我們的企業中所有的計算機和當前登錄的用戶。輸出域計算機名和登錄用戶名錶格

我停下來問:「爲什麼?」並開始使用NBTSTAT。 012>>>>結果不一致。然後我嘗試了NET CONFIG WORKSTATION,最後是PSLOGGEDON.EXE(SYSINTERNALS)。這些都很好,但我必須找到一種方法來傳遞NET VIEW的結果,並很好地爲csv格式化輸出。

但是後來我想一定有更好的辦法。我們的PC中90%都是WinXP,所以我可以使用WMIC或DSQuery。我寧願將命令執行隔離到AD計算機容器中的工作站,而不要觸摸我們的服務器。

有沒有人有任何建議?

+0

這是我到目前爲止:/ f「skip = 3 delims = \」@@在in('淨視圖')做回聲。@@ c> > computer_list.txt for/f @@ u in(computer_list.txt)do psloggedon -l -x \\ @@ u 2> nul |找到「DOMAIN \」>> user_list.txt 現在我需要將兩個文本文件合併爲一個csv。我想格式化,像這樣: ComputerA 與loggedInUser ComputerB 與loggedInUser ... – jonatj 2010-09-25 08:09:04

+0

您可以直接把這些代碼到您的文章。這更好看。在評論中沒有人會閱讀它。 – Joey 2010-11-10 11:44:46

回答

0

這似乎給我我想要的東西:

FOR /F "skip=3 delims=\ " %%A IN ('net view') DO WMIC /Node:"%%A" ComputerSystem Get UserName /Format:csv 2>nul | MORE /E +2 >> computer_user_list.csv 

注意,有一個製表後面加一個空格後delims=\

也許別人可以使用它。

1

你可以做一個LDAP搜索到Active Directory(LDIFDE)

ldifde -m -f OUTPUT.LDF -b USERNAME DOMAINNAME * -s SERVERNAME -d "cn=users,DC=DOMAINNAME,DC=Microsoft,DC=Com" -r "(objectClass=user)" 

通過改變對象類搜索用戶,然後計算機。

您還可以在最後指定您想要的屬性。

eg: ldifde -f e:\Exportuser.ldf -s DomainController -d "ou=user,ou=sitename,dc=uk" -p subtree -r "(objectClass=User)" -l givenname,sn,samaccountname,mail,dn 

或使用.NET腳本

1

PsExec.exe + PsLoggedOn.exe +批處理文件。

第1步。下載PsExec.exe並將其放在一個文件夾中。

第2步。將PsExec.exer和PsLoggedOn.exe放在一個文件夾中。

第3步。確定網絡共享。

第4步。創建一個名爲pc_list.txt的文本文件,粘貼NET VIEW的結果(減去「\」 - 應該是每行一個計算機名稱)。基本上應符合下列文字:

computer1 
computer2 
computer3 
computer4 
10.1.1.1 
10.2.1.3 
10.3.1.4 

您可以使用IP或計算機名。

步驟5.創建名爲PsExec.bat一個批處理文件用下面的代碼:

"location_of_PsExec.exe"\PsExec.exe @"location_of_text_file"\pc_list.txt -u domain\Admin_username -p password -n 60 -c -f "location_of_runPsLoggedOn.bat"\runPsLoggedOn.bat 

步驟6.創建名爲runPsLoggedOn.bat另一個批處理文件用下面的代碼:

@echo off 
    echo.%computername%>>"location_of_network_share"\userlist.txt 
    PsLoggedOn.exe -x>>"location_of_network_share"\userlist.txt 
    echo.>>"location_of_network_share"\userlist.txt 

第7步。運行PsExec。蝙蝠

這真的可能不會是你正在尋找的確切答案,但這應該至少讓你指出正確的方向... 我沒有測試過這一點,但我用東西類似於使用PsExec.exe完成其他事情。 您只需在代碼中寫入,以僅輸出域\用戶名到網絡共享上的文件(來自PsLoggedOn.exe -x >>「location_of_network_share」\ userlist.txt),因爲輸出如下所示: 用戶本地登錄: 域\用戶

沒有人通過資源共享登錄。

您也可能希望找到,至於格式化的進行,一種方式來輸出該用戶名的變量,讓你可以做到以下幾點:

echo.%computername% %variable_username_from_PsLoggedOn%>>"location_of_network_share"\userlist.txt 

無論如何,這應該讓你開始你的方式得到這個解決方案...