PowerShell限制計算機使用時長

2022-06-16 18:57:14 字數 1647 閱讀 7170

前兩天中午吃飯的時候,同事問在windows

下有沒有什麼辦法可以限制使用者使用計算機的時長,比如超過兩個小時,則不允許繼續使用,另一同事說網上有很多類似的軟體啊,超時了則不允許其繼續上網,同事說是想限制其不能再繼續使用計算機。我問是不是想限制你兒子玩遊戲啊,他說是。我想了想說這個不難,我給你寫個指令碼吧,過兩天給你。

大概思路就是根據開機時間判斷其使用時長,超時後則自動登出,但也不能一概而論,必須要區分對待不同的賬戶,否則的話,電腦就誰都沒法用了。所以最好就是再新建乙個賬戶,根據其登陸時間判斷使用時長,超時後自動登出,為了防止其再重新登入,可以將其賬戶禁用,管理員可以重新啟用。

總體思路如下:

1. 使用 query user

命令獲取當前登陸賬戶及其登陸時間

2. 判斷當前使用者名稱,使用時長是否超過2

小時如果是administrator

,則不做任何處理;

如果不是administrator

,並且登陸時間大於

2小時,則將其禁用,然後自動登出,為了人性化需要,先彈出乙個視窗提示使用者在

1分鐘後系統將自動登出

3. 通過計畫任務每隔15

分鐘或半小時執行一次該指令碼

詳細指令碼命令如下:

$quser = query user

for ($i=1;$i -le $quser.count-1; $i++)

$userc.disabled = $true

$userc.put()

#登出shutdown -l }}

在此簡單解釋一下,query user

命令本身屬於批處理命令,執行後顯示資訊如下:

在windows xp

系統中,不能同時有多個使用者本地登入,在

windows server2003

或2008

中,則允許多個使用者同時登入,所以在此處使用了

for迴圈進行遍歷。

query user的查詢結果均為字元型別,所以使用了

split

方法擷取字元,從而取出當前使用者名稱;登入時間也是一樣,只是最後通過

datatime

將其轉換為時間型別,用來和當前時間進行比較。

powershell指令碼在執行的時候,會出現乙個黑色視窗,有時可能會一閃而過,為了使其在後台執行,可以通過

vbs指令碼呼叫

powershell

,達到隱藏視窗的目的,

vbs指令碼命令如下:

set ws = createobject("wscript.shell")

『powershell指令碼名為auto_logoff.ps1,存放在c

盤根目錄下,可以自行更改

ws.run "cmd /c c:\auto_logoff.ps1",vbhide

還有一點需要注意的是:windows xp

預設不支援

query user

命令,可以在

windows 7

或windows server

系統下將

c:\windows\system32

下的query.exe

檔案拷貝到

xp的同樣目錄下。

在遠端計算機執行PowerShell命令

檢查powershell remoting是否啟用 在windows server 2008 r2上以管理員身份執行powershell,然後輸入 1 enter pssession computername localhost 返回如下截圖 說明該版本預設是沒有啟用powershell remot...

計算機 計算機基礎整理

大學四年浪費的代價。半夜整理東西 cpu 其功能主要是解釋計算機指令以及處理計算機軟體中的資料。cpu由運算器 控制器和暫存器及實現它們之間聯絡的資料 控制及狀態的匯流排構成。差不多所有的cpu的運作原理可分為四個階段 提取 fetch 解碼 decode 執行 execute 和寫回 writeb...

(計算機視覺)計算機視覺基礎

opencv cximage cimg freeimage opencv中vc庫的版本與visual studio版本的對應關係 vc8 2005 vc9 2008 vc10 2010 vc11 2012 vc12 2013 vc14 2015 vc15 2017 visual studio中的輔助...