iT邦幫忙

0

查詢網域內電腦多久沒關機

ad

各位大大
因為公司規定 下班後一般PC必須要關機
所以主管時常請我拉出超過3天沒關機的報表
目前公司是用第三方的IP GUARD去拉這個報表
但是發現準確率極低 常常鬧出笑話

請問各位大大有沒有別的方法可以做到這件事情呢?

看更多先前的討論...收起先前的討論...
補覺鳴詩 iT邦研究生 5 級 ‧ 2020-03-19 15:28:36 檢舉
你可以用 snmp 服務 可以看到 uptime
報表的部分就自行研究了
echochio iT邦高手 1 級 ‧ 2020-03-19 16:37:07 檢舉
有 AD 嗎 ?
有這個好解 ......
ahfuyeuem iT邦新手 5 級 ‧ 2020-03-19 17:10:20 檢舉
有AD
slime iT邦大師 1 級 ‧ 2020-03-20 08:15:03 檢舉
請總經理發公告,

各主管下班前查詢員工主機情況,

若被查到, 員工獎金扣除試算電費三倍, 主管獎金扣試算電費兩倍.
設定排程...下班一到總開關自動斷電XD...(請大家準備手電筒~哈

1 個回答

2
jeles51
iT邦研究生 5 級 ‧ 2020-03-20 08:53:14
最佳解答

用 Powershell 吧

1.在 DC 上,開個夾,建立一個檔,例如: C:\ps\Get_Uptime.ps1
2.執行 Powershell
3. cd c:\ps
4. .\Get_Uptime.ps1
5. 會得到 2 個 CSV 檔.

Get_Uptime.ps1 內容

#若有錯誤,略過,繼續
$ErrorActionPreference = 'SilentlyContinue'

#取出本網域間的所有電腦名稱
#若您沒安裝伺服器管理工具RSAT, 請在DC主機上執行.
$Name=Get-ADComputer -Filter 'Name -like "*"' | select -ExpandProperty Name
 
 foreach ( $N in $Name)
 {
	#取電腦作業系統資訊
	$OS = gwmi Win32_OperatingSystem -computerName $N

	#取上次開機時間
	$boottime = $OS.converttodatetime($OS.LastBootUpTime)

	#折分日期
	$bt3 = (Get-Date) - $OS.ConvertToDateTime($OS.LastBootUpTime)

	#轉日期格式 "yyyy-MM-dd hh:mm:ss"
	$boottime2 = $boottime | Get-Date -f "yyyy-MM-dd hh:mm:ss"

	#取開機天數
	$uptime = New-TimeSpan (get-date $boottime2) 
	$uptime_days = [int]$uptime.days

	#輸出到CSV, 格式= 電腦名稱,上次開機時期,已開機 日數
	$N+","+$boottime2+","+$uptime_days |OUT-FILE -Append data.csv

	#輸出到CSV, 格式= 電腦名稱,上次開機時期,已開機 日,時,分
	$N+","+$boottime2+","+$bt3.Days + " Days " + $bt3.Hours + " Hours " + $bt3.Minutes + " Minutes" |OUT-FILE -Append data2.csv
 }
CalvinKuo iT邦大師 7 級 ‧ 2020-03-20 10:33:22 檢舉
ahfuyeuem iT邦新手 5 級 ‧ 2020-03-27 11:39:53 檢舉

感謝大大 現在卡在抓遠端電腦時間時會出現RPC伺服器無法使用
確定兩端的防火牆都有開啟RPC服務 仍會跳出此訊息 大大有遇過嗎?

jeles51 iT邦研究生 5 級 ‧ 2020-03-27 14:59:57 檢舉

我們是有在GPO開啟Powershell指令碼執行:
[電腦->原則->系統範本->Windows元件->Windows Powershell->開啟指令碼執行(允許本機及遠端已簽署)]

其它方法:
https://devblogs.microsoft.com/scripting/an-introduction-to-powershell-remoting-part-two-configuring-powershell-remoting/

我要發表回答

立即登入回答