PowerShell 로 quuser 문자열 결 과 를 대상 으로 변환

오늘 콩 은 터미널 서버 의 사용 자 를 원 격 으로 로그아웃 해 야 합 니 다. 조작 이 간단 합 니 다. 먼저 quser 에서 원 격 사용자 의 sessionID 를 가 져 온 다음 logoff 명령 을 취소 하면 됩 니 다.
quser /server:XXXX
logoff sessionID /server:XXX

초기 cmd 와 Linux 의 bash 명령 과 마찬가지 로 quser 의 결 과 는 모두 문자열 입 니 다.문자열 의 처 리 는 스 크 립 트 에 있어 서 비교적 번 거 롭 습 니 다. 표준 object 대상 으로 변환 할 수 있 었 으 면 좋 겠 습 니 다.
quser 의 결 과 를 자세히 살 펴 보면 그의 출력 결과 가 매우 가지런 하 다 는 것 을 알 수 있 습 니 다. 제 가 그의 중간 빈 칸 을 쉼표 로 바 꿀 수 있다 면 그것 은 표준 csv 형식 입 니 다. 그러면 대상 으로 쉽게 바 꿀 수 있 습 니 다.유일한 문 제 는 세 션 name 이 비어 있 는 열 입 니 다. 그러면 몇 개의 빈 칸 을 교체 해 야 하 는 지 세 어 봐 야 합 니 다.
PS C:\users\yli\Documents> $a=quser /server:sydbcc02
PS C:\users\yli\Documents> $a
 USERNAME              SESSIONNAME        ID  STATE   IDLE TIME  LOGON TIME
 smiths                rdp-tcp#5          16  Active  24692+13:29  3/14/2017 9:06 AM
 llederbauer           rdp-tcp#4          22  Active       1:18  3/14/2017 9:18 AM
 jedwards                                 23  Disc         1:39  3/14/2017 7:54 AM
 tpicken               rdp-tcp#2          24  Active          .  3/14/2017 8:22 AM
 okaragiaouris         rdp-tcp#9          27  Active         18  3/14/2017 8:55 AM
 bhue                  rdp-tcp#7          28  Active         12  3/14/2017 9:20 AM
 mcherginets                              29  Disc         1:37  3/14/2017 8:58 AM
 abishop                                  30  Disc         2:48  3/14/2017 9:22 AM
 fburns                                   31  Disc         2:28  3/14/2017 9:37 AM
 ygordony                                 32  Disc         2:07  3/14/2017 10:04 AM
 tmoloney              rdp-tcp#0          33  Active       1:07  3/14/2017 9:30 AM
 smaroo                rdp-tcp#1          34  Active       1:45  3/14/2017 10:19 AM
 jwoodford                                35  Disc           22  3/14/2017 10:42 AM
 mozard                rdp-tcp#8          36  Active         56  3/14/2017 11:08 AM
 gmarsh                rdp-tcp#6          37  Active         41  3/14/2017 10:56 AM
 mking                                    38  Disc           20  3/14/2017 11:11 AM
 mcolgan               rdp-tcp#11         39  Active         59  3/14/2017 11:16 AM
 jbelgiovane           rdp-tcp#12         41  Active         39  3/14/2017 11:33 AM
 ndrabsch                                 42  Disc            3  3/14/2017 11:57 AM

직접 보면 구분 이 잘 안 돼 요. ASCII 로 바 꿔 보 세 요. 32 (빈 칸 대표) 가 16 개 예요.
$a=quser /server:sydbcc02
[int[]][char[]]$a[2]

32
108
108
101
100
101
114
98
97
117
101
114
32
32
32
32
32
32
32
32
32
32
32
114
100
112

okay, 그럼 제 가 지정 한 수량 은 2 에서 17 사이 의 빈 칸 을 모두 쉼표 로 바 꿉 니 다. 2 부터 'idle time' 이라는 이름 들 사이 에 빈 칸 이 있 으 면 바 꾸 지 마 세 요. 마지막 코드 는 다음 과 같 습 니 다.
$quser = (quser /server:sydbcc02) -replace '\s{2,17}', ',' | ConvertFrom-Csv
$quser | ft

USERNAME      SESSIONNAME ID STATE  IDLE TIME LOGON TIME        
--------      ----------- -- -----  --------- ----------        
smiths                    16 Disc   3         3/14/2017 9:06 AM 
llederbauer   rdp-tcp#4   22 Active 1:26      3/14/2017 9:18 AM 
jedwards                  23 Disc   1:47      3/14/2017 7:54 AM 
tpicken       rdp-tcp#2   24 Active 7         3/14/2017 8:22 AM 
okaragiaouris rdp-tcp#9   27 Active .         3/14/2017 8:55 AM 
bhue          rdp-tcp#7   28 Active 20        3/14/2017 9:20 AM 
mcherginets               29 Disc   1:44      3/14/2017 8:58 AM 
abishop                   30 Disc   2:56      3/14/2017 9:22 AM 
fburns                    31 Disc   2:36      3/14/2017 9:37 AM 
ygordony                  32 Disc   2:15      3/14/2017 10:04 AM
tmoloney      rdp-tcp#0   33 Active 1:15      3/14/2017 9:30 AM 
smaroo        rdp-tcp#1   34 Active 1:52      3/14/2017 10:19 AM
jwoodford                 35 Disc   30        3/14/2017 10:42 AM
mozard        rdp-tcp#8   36 Active .         3/14/2017 11:08 AM
gmarsh        rdp-tcp#6   37 Active 48        3/14/2017 10:56 AM
mking                        38     Disc      27                
mcolgan                   39 Disc   .         3/14/2017 11:16 AM
jbelgiovane   rdp-tcp#12  41 Active 47        3/14/2017 11:33 AM
ndrabsch      rdp-tcp#3   42 Active .         3/14/2017 11:57 AM
alawton                   43 Disc   11        3/14/2017 12:02 PM

이렇게 하면 쉽게 처리 할 수 있 고 같은 사고방식 도 다른 cmd 명령 에 사용 할 수 있다.

좋은 웹페이지 즐겨찾기