Python에서는이 작업을 수행하기가 쉽지만 PowerShell에서이 작업을 수행하는 방법을 알아 내려고 책상에 머리를 부딪 히고 있습니다. Powershell에서 호출하는 다른 실행 파일에서이 출력을 얻고 있습니다. 최종 목표는 첫 번째 텍스트 (세션 ID), IP 주소 및 날짜 / 시간을 추출하여 각 텍스트를 PowerShell 개체로 변환하는 것입니다.
내가 잃어버린 곳은 각 정보 그룹 (텍스트 3 줄)을 배열로 가져 오는 방법입니다.이를 통해 객체로 쉽게 변환 할 수 있습니다. 거대한 문자열에서 객체를 생성하는 방법도 있다고 확신합니다. 나는 두 가지 방법 중 하나에 열려 있습니다. 아래 출력은 변수에 저장됩니다. 문자열을 어떻게 분할하더라도 배열은 필요한 3 줄 대신 각 텍스트 줄을 요소로 사용합니다. 나는 성공하지 못한 새 줄과 캐리지 리턴을 제거하려고 시도했습니다. 누군가 나를 올바른 방향으로 밀어 줄 수 있습니까?
10480fc9aa telnet [email protected]
Logon at: Tue Jan 14 07:55:20 2020
Running: program.bat
10481e6429 telnet [email protected]
Logon at: Tue Jan 14 07:58:53 2020
Running: program.bat
1048338699 telnet [email protected]
Logon at: Tue Jan 14 08:09:28 2020
Running: program.bat
10485aef1d telnet [email protected]
Logon at: Tue Jan 14 08:39:17 2020
Running: program.bat
1048ece4b9 telnet [email protected]
Logon at: Tue Jan 14 10:52:24 2020
Running: program.bat
1048fef5d5 telnet [email protected]
Logon at: Tue Jan 14 11:18:44 2020
Running: program.bat
1049008fab telnet [email protected]
Logon at: Tue Jan 14 11:20:30 2020
Running: program.bat
104910d0a7 telnet [email protected]
Logon at: Tue Jan 14 11:42:15 2020
Running: program.bat
104930ec10 telnet [email protected]
Logon at: Tue Jan 14 12:26:23 2020
Running: program.bat
10493c8e24 telnet [email protected]
Logon at: Tue Jan 14 12:43:08 2020
Running: program.bat
10493f7650 telnet [email protected]
Logon at: Tue Jan 14 12:47:13 2020
Running: program.bat
switch
regexe를 사용하여 관심있는 정보를 추출한 다음 추출 된 정보를 사용하여 3 줄의 각 블록에 대한 사용자 지정 출력 개체를 구성하는 문을 통해 실행 파일의 출력 줄을 하나씩 처리하는 다음 접근 방식을 시도 할 수 있습니다 .
$i = 0
yourexecutable.exe | ForEach-Object {
$line = $_
switch (++$i % 3) {
1 { # 1st line of a block of 3: extract the session ID and IP address.
$null = $line -match '^(\S+) .*@(\S+)'
$sessionId = $Matches[1]
$ip = $Matches[2]
}
2 { # 2nd line: extract the login timestamp.
$null = $line -match 'Logon at: (.+)'
$date = $Matches[1]
}
default { # 3rd line: construct the output object for the block at hand.
[pscustomobject] @{
SessionId = $sessionId
Ip = $ip
Date = $date
}
}
}
}
샘플 입력으로 다음과 같은 결과를 얻을 수 있습니다.
SessionId Ip Date
--------- -- ----
10480fc9aa 172.16.8.11 Tue Jan 14 07:55:20 2020
10481e6429 172.16.8.14 Tue Jan 14 07:58:53 2020
1048338699 172.16.8.13 Tue Jan 14 08:09:28 2020
10485aef1d 172.16.8.10 Tue Jan 14 08:39:17 2020
1048ece4b9 172.16.8.3 Tue Jan 14 10:52:24 2020
1048fef5d5 172.16.8.6 Tue Jan 14 11:18:44 2020
1049008fab 172.16.8.15 Tue Jan 14 11:20:30 2020
104910d0a7 172.16.8.15 Tue Jan 14 11:42:15 2020
104930ec10 172.16.8.7 Tue Jan 14 12:26:23 2020
10493c8e24 172.16.8.4 Tue Jan 14 12:43:08 2020
10493f7650 172.16.8.15 Tue Jan 14 12:47:13 2020
모든 속성 값은 문자열입니다 . 당신이 원한다면 .Date
유형으로 속성을 [datetime]
예를 들어, 당신은 사용할 수 있습니다 [datetime]::ParseExact($date, '...')
- 참조 System.DateTime.ParseExact
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다