簡體   English   中英

通過PS注銷特定的斷開連接的用戶的腳本

[英]Script to Log Off Specific Disconnected User via PS

我目前正在使用腳本來識別整個域中來自特定用戶帳戶的X天中斷的會話。

我們擁有一個可以在所有選定計算機上運行此腳本的工具,因此選擇目標沒有問題,因為在這種情況下本地主機就足夠了。

但是,由於我是Powershell的新手,所以我在腳本中的一些元素上苦苦掙扎。

$userName = 'USERNAMEHERE'
$State = 'Disc'
$sessionId = ((quser /server:localhost | Where-Object { $_ -match $userName }{ $_ -match $State }{[datetime]$_."Idle Time" -le (Get-Date).AddDays(-1)})-split ' +')[3]
$sessionId
logoff $sessionId /server:localhost

我正在努力解決的問題是:

  1. 找不到接受參數“ $ _ -match $ State”的位置參數-這是我試圖將太多會話ID塞滿到此行的結果嗎? 還是那個狀態不是有效的參數? 還是我缺少的另一個問題? 據我所知,國家不是關鍵,所以這就是我遇到麻煩的地方,但是我不確定如何解決它。

如果我的路還很遙遠,需要進行相應的調整,我也將不勝感激。

謝謝安迪

更改

$sessionId = ((quser /server:localhost | Where-Object { $_ -match $userName }{ $_ -match $State }{[datetime]$_."Idle Time" -le (Get-Date).AddDays(-1)})-split ' +')[3]

$sessionId = ((quser /server:localhost | Where-Object { $_ -match $userName -and $_ -match $State -and [datetime]$_."Idle Time" -le (Get-Date).AddDays(-1)})-split ' +')[3]

您需要使用邏輯運算符組合多個條件。

Toby的建議對於處理錯誤消息是正確的。 如果要輸出會話ID ,可以運行以下命令:

$userName = 'username'
$State = 'Disc'
$sessions = (quser /server:localhost).TrimStart() -replace "\s{2,}",","
$sessionIDs = $sessions | ForEach-Object {
    $SessionProperties = $_ -split ","  
    if ($SessionProperties[0] -eq $userName -and $SessionProperties[-3] -eq $state -and $SessionProperties[-2] -match "\+") { 
        $SessionProperties[-4]
    }
    }
$sessionIDs

TrimStart()方法從quser輸出中刪除初始空格/縮進。

-replace運算符正在做一些格式化。 它用逗號替換連續的空格。 這只是一個自制的定界符,可以更好地訪問數據。

我選擇遍歷$sessions因為有時同一用戶有多個斷開的會話。 它永遠不會發生,但Windows將是Windows。

$SessionProperties $sessions每一行拆分為一個數組。 逗號之間的每個部分字符串都是數組中的一個元素。 為了訪問數組的元素,我使用了各種索引號。 [0]是第一個元素,應始終為用戶名。 負索引(如[-4]從數組末尾開始倒計數。 [-1]表示數組的最后一個索引,而[-2]將是倒數第二個元素,依此類推。 之所以選擇負索引,是因為有時quser輸出的SESSIONNAME是空格,這使-split運算符創建的數組少了一個元素。 這樣做可以使您將來將$State變量更改為其他名稱,無論SESSIONNAME是否包含任何有用的數據。

-match運算符匹配字符+ +表示天數。 由於您要搜索至少一天的空閑時間,因此這使正則表達式匹配更加簡單。 如果您想在少於一天的空閑時間內進行匹配,則需要對此進行更改。

有關-match信息,請參見有關-split信息,請參見about_Split

有關-replace-match ,請參見about_Comparison_Operators

一般而言,您可以細讀about_Operators

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM