我正在嘗試撰寫一個腳本,將 qwinsta 的結果作為物件回傳給我。我的腳本代碼是這樣的:
function Get-QWinsta {
$queryResults = (qwinsta /Server:$ENV:COMPUTERNAME | ForEach-Object { ( ( $_.Trim() -replace "\s ",",") ) } | ConvertFrom-Csv)
$queryResults | ForEach-Object { if ( $_.SESSIONNAME -match 'da-' ) {
$_.USERNAME = $_.SESSIONNAME; $_.SESSIONNAME = $null; $_.STATE = $_.ID; $_.ID = $null
}
}
$RDPSESSIONS = $queryResults | ForEach-Object {
[PSCustomObject]@{
UserName = if ( $_.USERNAME -match '\d' ) { $_.USERNAME = $null } else { $_.USERNAME }
SessionName = if ( $_.SESSIONNAME -match 'services|console' ) { $_.SESSIONNAME = $null } else { $_.SESSIONNAME }
SessionID = $_.ID
SessionState = if ( $_.ID -match 'Disc' ) { $_.STATE = 'Disconnected' } else { $_.STATE }
}
}
return $RDPSESSIONS
}
輸出是這樣的:
UserName SessionName SessionID SessionState
-------- ----------- --------- ------------
Disc
Conn
Admin01 Disc
Admin02 rdp-tcp#41 4 Active
rdp-tcp Listen
然而,上面不是一個真實的物件,我真正想要的輸出是這樣的:
UserName SessionName SessionID SessionState
-------- ----------- --------- ------------
Admin01 Disc
Admin02 rdp-tcp#41 4 Active
另外,如果我可以這樣:
> $user1 = (Get-Qwinsta).UserName
> Write-Output $user1
> Admin01
那將是一個獎勵。
我在這里和互聯網上的任何地方都閱讀了所有類似的帖子,但沒有一個作業得很好,也沒有達到我想要實作的目標。
uj5u.com熱心網友回復:
您可以將qwinsta結果作為自定義物件獲取,如下所示:
function Get-QWinsta
{
param ($ComputerName = "$env:COMPUTERNAME")
qwinsta /server:$ComputerName |
ForEach-Object {$_ -replace "\s{2,18}",","} |
ConvertFrom-Csv
}
> Get-QWinsta -ComputerName 'Server1'
這為輸出中的每個條目提供了一個自定義物件:
SESSIONNAME : services
USERNAME :
ID : 0
STATE : Disc
TYPE :
DEVICE :
SESSIONNAME : console
USERNAME :
ID : 1
STATE : Conn
TYPE :
DEVICE :
SESSIONNAME : session1
USERNAME : User1
ID : 23
STATE : Active
TYPE : wdica
DEVICE :
SESSIONNAME : session2
USERNAME : User2
ID : 25
STATE : Active
TYPE : wdica
DEVICE :
可以像其他物件一樣進行操作。例如,在表格中顯示:
> Get-QWinsta -ComputerName 'Server1' | Format-Table -Autosize
SESSIONNAME USERNAME ID STATE TYPE DEVICE
----------- -------- -- ----- ---- -------
services 0 Disc
console 1 Conn
session1 User1 23 Active wdica
session2 User2 25 Active wdica
session3 User3 41 Active wdica
或者,僅輸出特定屬性:
> (Get-QWinsta -ComputerName 'Server1').UserName
User1
User2
User3
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/495237.html
