none
要如何知道這台DC有多少台到腦登入? RRS feed

解答

  • 提供個人的一些經驗給您參考

    利用網域群組原則的使用者登入指令檔方式, 您就可在指定的DC上直接查看記錄檔, 這裏提供兩個方式

     

    第一種, 使用批次檔.bat或命令檔.cmd (陽春型)

    但必須指定UNC Path或建立網路磁碟機, 內容如下:

     

    echo Username:%USERNAME%,Computername:%COMPUTERNAME%,DomainControllers:%LOGONSERVER% >> Z:\Registration.csv

     


     

    第二種, 使用VB Script (建議使用)

    但必須請在strUNCFullPath指定完整的UNC及檔名

    若您想再參考使用者登出時間, 只要再利用網域群組原則的使用者登出指令檔方式, 並稍加修改Script即可, 內容如下:

     

    Const COMMA = ","


    strUNCFullPath = "\\xp3000\Rec$\Registration.csv"

     

    Set objSWbemServices = GetObject("winmgmts:\\.\root\cimv2" )

    Set colComputer = objSWbemServices.InstancesOf("Win32_ComputerSystem")

     

    For Each objComputer in colComputer

    strUsername = objComputer.UserName

    strComputername = objComputer.Name

    Next


     

    Set objDomain = GetObject("LDAP://RootDSE")

    objDC = objDomain.Get("dnsHostName")

     

    DataInfo = strUsername & COMMA & strComputername & COMMA & objDC & COMMA & NOW & VbCrLf

     

    Set objFSO = CreateObject("Scripting.FileSystemObject")

     

    If NOT objFSO.FileExists(strUNCFullPath) Then

     

    Set objFile = objFSO.CreateTextFile(strUNCFullPath)

    objFile.Write ("UserName,ComputerName,DomainContollers,LoginTime" & VbCrLf)

    Else

     

    Set objFile = objFSO.OpenTextFile(strUNCFullPath, 8)

    End IF

     

    objFile.Write (DataInfo)

     

     

    -------------------------------
        ScoVan 蘇紘賢

    2007年4月20日 上午 08:03

所有回覆

  • 登入的驗證Session是完成驗證就會結束與DC的Session,所以建議你在Client執行set longonserver來取得統計的資料會比較精準
    2007年4月5日 上午 07:06
  • 公司範圍大,不可能去用戶端一台一台去執行Set 指令吧
    2007年4月9日 上午 03:38
  • 提供個人的一些經驗給您參考

    利用網域群組原則的使用者登入指令檔方式, 您就可在指定的DC上直接查看記錄檔, 這裏提供兩個方式

     

    第一種, 使用批次檔.bat或命令檔.cmd (陽春型)

    但必須指定UNC Path或建立網路磁碟機, 內容如下:

     

    echo Username:%USERNAME%,Computername:%COMPUTERNAME%,DomainControllers:%LOGONSERVER% >> Z:\Registration.csv

     


     

    第二種, 使用VB Script (建議使用)

    但必須請在strUNCFullPath指定完整的UNC及檔名

    若您想再參考使用者登出時間, 只要再利用網域群組原則的使用者登出指令檔方式, 並稍加修改Script即可, 內容如下:

     

    Const COMMA = ","


    strUNCFullPath = "\\xp3000\Rec$\Registration.csv"

     

    Set objSWbemServices = GetObject("winmgmts:\\.\root\cimv2" )

    Set colComputer = objSWbemServices.InstancesOf("Win32_ComputerSystem")

     

    For Each objComputer in colComputer

    strUsername = objComputer.UserName

    strComputername = objComputer.Name

    Next


     

    Set objDomain = GetObject("LDAP://RootDSE")

    objDC = objDomain.Get("dnsHostName")

     

    DataInfo = strUsername & COMMA & strComputername & COMMA & objDC & COMMA & NOW & VbCrLf

     

    Set objFSO = CreateObject("Scripting.FileSystemObject")

     

    If NOT objFSO.FileExists(strUNCFullPath) Then

     

    Set objFile = objFSO.CreateTextFile(strUNCFullPath)

    objFile.Write ("UserName,ComputerName,DomainContollers,LoginTime" & VbCrLf)

    Else

     

    Set objFile = objFSO.OpenTextFile(strUNCFullPath, 8)

    End IF

     

    objFile.Write (DataInfo)

     

     

    -------------------------------
        ScoVan 蘇紘賢

    2007年4月20日 上午 08:03
  • 補充一下, 第二種方式在較大記錄檔來說會較耗頻寬, 請自行評估.

     

     

    ----------------------

    ScoVen 蘇紘賢

    2007年4月20日 上午 08:23
  •  ScoVan 寫信:

    補充一下, 第二種方式在較大記錄檔來說會較耗頻寬, 請自行評估.

     ----------------------

    ScoVen 蘇紘賢

     

    抱歉,我用

    %logonserver%

    與用

    Set objDomain = GetObject("LDAP://RootDSE")

    objDC = objDomain.Get("dnsHostName")

     

    所得出的結果不同,我們有兩台 DC,一台 Main 、一台 Main1,FSMO 5 種角色都在 Main 身上,但是 %logonserver% 是 Main,而後者的 objDC = Main1,而我觀查網路的目錄服務連線,電腦同時與 main 和 main1 連線,那麼我要如何確定的知道目前登入的是那一個 Server 呢?還是只有用在 Logon Script 時才能得出正確的結果?(以上的測試並不是在 Logon Script)


    謝謝您指點

    2007年4月23日 上午 09:39
  • http://www.microsoft.com/taiwan/technet/scriptcenter/resources/qanda/jun05/hey0615.mspx

    只有在使用者用戶端電腦上登入時, Run Logon Script取得的資料最準確.

     

     

    ---------------------

       ScoVan 蘇紘賢
    2007年5月2日 下午 06:43