[- Disclaimer -]
아래 내용은 정보보안 공부 목적으로 작성된 것이나, 이를 토대로 허가되지 않은 대상에 실습을 진행할 경우 해킹 시도로 간주하여 법적 처벌을 받을 수 있음을 알려 드립니다.
Format-Table
✦ Column 단위 확인
PS C:\> Get-Command -CommandType cmdlet -name format*
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Format-Custom 3.1.0.0 Microsoft.PowerShell.Utility
Cmdlet Format-List 3.1.0.0 Microsoft.PowerShell.Utility
Cmdlet Format-SecureBootUEFI 2.0.0.0 SecureBoot
Cmdlet Format-Table 3.1.0.0 Microsoft.PowerShell.Utility
Cmdlet Format-Wide 3.1.0.0 Microsoft.PowerShell.Utility
PS C:\>
Plain Text
복사
PS C:\> Get-Help *Format*
Name Category Module Synopsis ---- -------- ------ -------- Format-Hex Function Microsoft.PowerShell.U... ... Export-FormatData Cmdlet Microsoft.PowerShell.U... ... Format-Custom Cmdlet Microsoft.PowerShell.U... ... Format-List Cmdlet Microsoft.PowerShell.U... ... Format-Table Cmdlet Microsoft.PowerShell.U... ... Format-Wide Cmdlet Microsoft.PowerShell.U... ...
Get-FormatData Cmdlet Microsoft.PowerShell.U... ...
Update-FormatData Cmdlet Microsoft.PowerShell.U... ...
Write-Information Cmdlet Microsoft.PowerShell.U... ...
Get-AppLockerFileInformation Cmdlet AppLocker Get-AppLockerFileInformation...
Format-SecureBootUEFI Cmdlet SecureBoot Format-SecureBootUEFI...
Format-Volume Function Storage ...
Get-StorageFirmwareInformation Function Storage ...
PS C:\>
Plain Text
복사
PS C:\> Get-Help | Format-Table
항목
Windows PowerShell 도움말 시스템
간단한 설명
Windows PowerShell cmdlet 및 개념에 대한 도움말을 표시합니다.
자세한 설명
Windows PowerShell 도움말은 Windows PowerShell cmdlet,
함수, 스크립트 및 모듈에 대해 설명하고 Windows PowerShell 언어의 요소를 비롯한
개념에 대해 설명합니다.
Windows PowerShell에는 도움말 파일을 포함하고 있지 않지만 온라인에서
도움말 항목을 확인하거나, Update-Help cmdlet을 사용하여 도움말 파일을
컴퓨터에 다운로드한 다음 Get-Help cmdlet을 사용하여 도움말 항목을
명령줄에 표시할 수 있습니다.
또한 업데이트된 도움말 파일이 발표되면 Update-Help cmdlet을 사용하여 다운로드하여
로컬 도움말 콘텐츠를 최신 버전으로 유지할 수 있습니다.
도움말 파일이 없으면 Get-Help를 통해 cmdlet, 함수, 스크립트에 대한
자동 생성된 도움말이 표시됩니다.
온라인 도움말
Windows PowerShell에 대한 도움말은 TechNet 라이브러리(http://go.microsoft.com/fwlink/?LinkID=108518)에서
확인할 수 있습니다.
cmdlet 또는 함수에 대한 온라인 도움말을 열려면 다음과 같이 입력하십시오.
Get-Help <cmdlet-name> -Online
UPDATE-HELP
도움말 파일을 컴퓨터에 다운로드하고 설치하려면
1. "관리자 권한으로 실행" 옵션을 사용하여 Windows PowerShell을 시작합니다.
2. 다음과 같이 입력합니다.
Update-Help
도움말 파일을 설치한 후에는 Get-Help cmdlet을 사용하여
도움말 항목을 표시할 수 있습니다. 또한 Update-Help cmdlet을 사용하여
업데이트된 도움말 파일을 다운로드하여 로컬 도움말 파일을 항상
최신 버전으로 유지할 수 있습니다.
Update-Help cmdlet에 대한 자세한 내용을 보려면 다음과 같이 입력하십시오.
Get-Help Update-Help -Online
또는 다음 링크로 이동하십시오. http://go.microsoft.com/fwlink/?LinkID=210614(영문)
GET-HELP
Get-Help cmdlet은 사용자 컴퓨터에 있는 도움말 파일의 콘텐츠로 된
도움말을 명령줄에 표시합니다. 도움말 파일이 없으면 Get-Help가 cmdlet 및 함수에 대한
기본 도움말을 표시합니다. 또한 Get-Help를 사용하여
cmdlet 및 함수에 대한 온라인 도움말을 표시할 수 있습니다.
cmdlet에 대한 도움말을 보려면 다음과 같이 입력하십시오.
Get-Help <cmdlet-name>
온라인 도움말을 보려면 다음과 같이 입력하십시오.
Get-Help <cmdlet-name> -Online
개념 항목의 제목은 'About_'으로 시작합니다.
개념 또는 언어 요소에 대한 도움말을 보려면 다음과 같이 입력하십시오.
Get-Help About_<topic-name>
모든 도움말 파일에서 단어 또는 구문을 검색하려면 다음과 같이 입력하십시오.
Get-Help <search-term>
Get-Help cmdlet에 대한 자세한 내용을 보려면 다음과 같이 입력하십시오.
Get-Help Get-Help -Online
또는 다음 링크로 이동하십시오. http://go.microsoft.com/fwlink/?LinkID=113316
예제:
Save-Help : 인터넷에서 도움말 파일을 다운로드하고
파일 공유에 저장합니다.
Update-Help : 인터넷 또는 파일 공유에서 도움말 파일을
다운로드하고 설치합니다.
Get-Help Get-Process : Get-Process cmdlet에 대한 도움말을 표시합니다.
Get-Help Get-Process -Online
: Get-Process cmdlet에 대한 온라인 도움말을 엽니다.
Help Get-Process : Get-Process에 대한 도움말을 한 번에 한 페이지씩 표시합니다.
Get-Process -? : Get-Process cmdlet에 대한 도움말을 표시합니다.
Get-Help About_Modules : Windows PowerShell 모듈에 대한 도움말을 표시합니다.
Get-Help 원격 : '원격'이라는 단어에 대한 도움말 항목을 검색합니다.
참고 항목:
about_Updatable_Help
Get-Help
Save-Help
Update-Help
PS C:\>
Plain Text
복사
✦ -AutoSize 옵션
✧ @{Lable="Name"; Expression={Data}}
PS C:\> Get-Process | Format-Table ProcessName, Id
ProcessName Id
----------- --
ApplicationFrameHost 5756
ASDSvc 3836
audiodg 10904
conhost 3800
conhost 10420
(...)
Plain Text
복사
GUI 형태로 Column 출력
PS C:\> Get-Gridveiw // ㄷㄷ
Get-Gridveiw : 'Get-Gridveiw' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니
다. 이름이 정확한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다시 시도하십시오.
위치 줄:1 문자:1
+ Get-Gridveiw
+ ~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Get-Gridveiw:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
PS C:\>
Plain Text
복사
Format-List
PS C:\> Get-Help Format-List
이름
Format-List
구문
Format-List [[-Property] <Object[]>] [<CommonParameters>]
별칭
fl
설명
Get-Help가 이 컴퓨터에서 이 cmdlet에 대한 도움말 파일을 찾을 수 없습니다. 일부 도움말만 표시합니다.
-- 이 cmdlet을 포함하는 모듈에 대한 도움말 파일을 다운로드하여 설치하려면 Update-Help를 사용하십시오.
-- 이 cmdlet에 대한 도움말 항목을 온라인으로 보려면 "Get-Help Format-List -Online"을 입력하거나
https://go.microsoft.com/fwlink/?LinkID=113302(으)로 이동하십시오.
PS C:\>
Plain Text
복사
PS C:\> Get-Process winlogon | Format-List -Property*
Format-List : 매개 변수 이름 'Property*'과(와) 일치하는 매개 변수를 찾을 수 없습니다.
위치 줄:1 문자:36
+ Get-Process winlogon | Format-List -Property*
+ ~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Format-List], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.FormatListCommand
PS C:\>
Plain Text
복사
출력 파일 생성
✦ Out-File
PS C:\> Get-Process | Out-File -filepath C:\result.txt
Out-File : 'C:\result.txt' 경로에 대한 액세스가 거부되었습니다.
위치 줄:1 문자:15
+ Get-Process | Out-File -filepath C:\result.txt
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OpenError: (:) [Out-File], UnauthorizedAccessException
+ FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.OutFileCommand
PS C:\>
Plain Text
복사
Where-Object
✦ Row 단위 확인
PS C:\> Get-Service | where-object { $_.Status -eq "Stopped" }
Status Name DisplayName
------ ---- -----------
Stopped AJRouter AllJoyn Router Service
Stopped ALG Application Layer Gateway Service
Stopped AppIDSvc Application Identity
Stopped AppMgmt Application Management
(...)
Plain Text
복사
PS C:\> Get-Process | Where-object { $_.id -gt 1000 }
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
354 21 7788 1764 0.83 5756 8 ApplicationFrameHost
734 41 143936 13056 3836 0 ASDSvc
538 14 16760 22356 19.39 10904 0 audiodg
102 7 6224 592 10420 0 conhost
604 48 28216 1524 16.75 9180 8 Cortana
(...)
Plain Text
복사
PS C:\> Get-Process | where-object { $_.ProcessName -match "^p.*" }
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
802 31 66160 84792 8.63 1560 8 powershell
242 28 24304 2596 4380 0 PresentationFontCache
232 17 2840 480 3924 0 PTMFire
PS C:\>
Plain Text
복사
Ex)
PS C:\> $str = Get-Process
PS C:\> $str
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
354 21 7788 1764 0.83 5756 8 ApplicationFrameHost
733 41 143912 10532 3836 0 ASDSvc
668 15 19044 24352 20.59 10904 0 audiodg
221 14 4308 16584 3.81 668 8 conhost
102 7 6224 592 10420 0 conhost
(...)
Plain Text
복사
PS C:\> $str | format-list
Id : 5756
Handles : 354
CPU : 0.828125
SI : 8
Name : ApplicationFrameHost
Id : 3836
Handles : 733
CPU :
SI : 0
Name : ASDSvc
Id : 10904
Handles : 668
CPU : 24.203125
SI : 0
Name : audiodg
(...)
Plain Text
복사
PS C:\> $str
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
354 21 7788 1764 0.83 5756 8 ApplicationFrameHost
733 41 143912 10532 3836 0 ASDSvc
668 15 19044 24352 29.38 10904 0 audiodg
221 14 4308 16584 10.59 668 8 conhost
102 7 6224 592 10420 0 conhost
(...)
Plain Text
복사
✦ 모든 Column 정보 확인
PS C:\> $str | format-list -property *
Name : ApplicationFrameHost
Id : 5756
PriorityClass : Normal
FileVersion : 10.0.19041.746 (WinBuild.160101.0800)
HandleCount : 354
WorkingSet : 1806336
PagedMemorySize : 7974912
PrivateMemorySize : 7974912
VirtualMemorySize : 241283072
TotalProcessorTime : 00:00:00.8281250
SI : 8
Handles : 354
VM : 2203559505920
WS : 1806336
PM : 7974912
NPM : 21616
Path : C:\WINDOWS\system32\ApplicationFrameHost.exe
Company : Microsoft Corporation
CPU : 0.828125
ProductVersion : 10.0.19041.746
Description : Application Frame Host
Product : Microsoft® Windows® Operating System
__NounName : Process
BasePriority : 8
ExitCode :
HasExited : False
ExitTime :
Handle : 4596
SafeHandle : Microsoft.Win32.SafeHandles.SafeProcessHandle
MachineName : .
MainWindowHandle : 263252
MainWindowTitle : 설정
MainModule : System.Diagnostics.ProcessModule (ApplicationFrameHost.exe)
MaxWorkingSet : 1413120
MinWorkingSet : 204800
Modules : {System.Diagnostics.ProcessModule (ApplicationFrameHost.exe), System.Diagnostics.ProcessMo
dule (ntdll.dll), System.Diagnostics.ProcessModule (KERNEL32.DLL), System.Diagnostics.Proc
essModule (KERNELBASE.dll)...}
NonpagedSystemMemorySize : 21616
(...)
Plain Text
복사
PS C:\> $str | format-table
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
354 21 7788 1764 0.83 5756 8 ApplicationFrameHost
733 41 143912 10532 3836 0 ASDSvc
668 15 19044 24352 32.06 10904 0 audiodg
221 14 4308 16584 11.02 668 8 conhost
102 7 6224 592 10420 0 conhost
604 48 28216 1524 16.75 9180 8 Cortana
152 13 1724 888 4.36 8056 8 CrossEXService
780 24 2416 1292 660 0 csrss
620 24 2432 1436 9420 8 csrss
429 16 4536 7860 21.63 5604 8 ctfmon
359 17 4032 688 10404 0 dasHost
(...)
Plain Text
복사
PS C:\> $str | format-table id, ProcessName
Id ProcessName
-- -----------
5756 ApplicationFrameHost
3836 ASDSvc
10904 audiodg
668 conhost
10420 conhost
9180 Cortana
8056 CrossEXService
660 csrss
9420 csrss
5604 ctfmon
(...)
Plain Text
복사
PS C:\> $str | format-table id, ProcessName -autosize
Id ProcessName
-- -----------
5756 ApplicationFrameHost
3836 ASDSvc
10904 audiodg
668 conhost
10420 conhost
9180 Cortana
8056 CrossEXService
(...)
Plain Text
복사
PS C:\> $str | format-table id, ProcessName,basepriority -autosize
Id ProcessName BasePriority
-- ----------- ------------
5756 ApplicationFrameHost 8
3836 ASDSvc 8
10904 audiodg 8
668 conhost 8
10420 conhost 8
9180 Cortana 8
8056 CrossEXService 8
(...)
Plain Text
복사
PS C:\> $str | where-object { $_ }
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
354 21 7788 1764 0.83 5756 8 ApplicationFrameHost
733 41 143912 10532 3836 0 ASDSvc
668 15 19044 24352 45.05 10904 0 audiodg
221 14 4308 16584 16.09 668 8 conhost
102 7 6224 592 10420 0 conhost
604 48 28216 1524 16.75 9180 8 Cortana
152 13 1724 888 4.50 8056 8 CrossEXService
(...)
Plain Text
복사
PS C:\> $str | where-object { $_.ProcessName -match "svchost" }
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
1475 26 16012 19512 64 0 svchost
665 14 16476 3820 832 0 svchost
1350 19 11900 11628 928 0 svchost
225 11 2060 2036 960 0 svchost
380 10 2964 3204 1052 0 svchost
254 13 2772 4360 1208 0 svchost
175 13 1800 1736 1236 0 svchost
269 19 2824 4912 1244 0 svchost
186 10 1956 4144 1256 0 svchost
464 9 2360 4436 1344 0 svchost
399 25 5344 8468 1396 0 svchost
338 12 2704 1500 1408 0 svchost
137 11 1624 1348 1432 0 svchost
439 13 15384 8056 1604 0 svchost
256 14 4280 2272 1688 0 svchost
(...)
Plain Text
복사
PS C:\> $first_step = $str | format-table id, processname, basepriority -autosize
PS C:\> $first_step
Id ProcessName BasePriority
-- ----------- ------------
5756 ApplicationFrameHost 8
3836 ASDSvc 8
10904 audiodg 8
668 conhost 8
10420 conhost 8
9180 Cortana 8
8056 CrossEXService 8
660 csrss 13
(...)
Plain Text
복사
// where-object로 넘겨주고 format-talbe을 건드려야 객체 속성이 변경되므로 이후 결과가 나온다고 해도 이렇게 하진 말자
PS C:\> $first_step | where-object { $_.processname -match "svchost" }
PS C:\>
Plain Text
복사
PS C:\> $first_step = $str | where-object { $_.ProcessName -match "svchost" }
PS C:\> $first_step
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
1475 26 16012 19512 64 0 svchost
665 14 16476 3820 832 0 svchost
1350 19 11900 11628 928 0 svchost
225 11 2060 2036 960 0 svchost
380 10 2964 3204 1052 0 svchost
254 13 2772 4360 1208 0 svchost
175 13 1800 1736 1236 0 svchost
269 19 2824 4912 1244 0 svchost
(...)
Plain Text
복사
PS C:\> $first_step | format-table id, processname, basepriority -autosize
Id ProcessName BasePriority
-- ----------- ------------
64 svchost 8
832 svchost 8
928 svchost 8
960 svchost 8
1052 svchost 8
1208 svchost 8
1236 svchost 8
(...)
Plain Text
복사
Custom
PS C:\> $col = "id", "ws", @{ Label = "WS(mb"; Expression = {$_.WS/1mb}; Align = "right" }
PS C:\> $col
id
ws
Name Value
---- -----
Label WS(mb
Align right
Expression $_.WS/1mb
PS C:\>
Plain Text
복사
PS C:\> $str | format-table $col
Id WS WS(mb
-- -- -----
5756 1806336 1.72265625
3836 10784768 10.28515625
10904 24936448 23.78125
(...)
Plain Text
복사
PS C:\> Get-Process | format-table $col -auto
Id WS WS(mb
-- -- -----
5756 1884160 1.796875
3836 5648384 5.38671875
10904 18358272 17.5078125
668 17686528 16.8671875
10420 606208 0.578125
9180 1560576 1.48828125
8056 909312 0.8671875
660 1306624 1.24609375
9420 3555328 3.390625
5604 9707520 9.2578125
10404 704512 0.671875
(...)
Plain Text
복사
Ex) - 3
PS C:\> Get-Help Write-Host
이름
Write-Host
구문
Write-Host [[-Object] <Object>] [<CommonParameters>]
별칭
없음
설명
Get-Help가 이 컴퓨터에서 이 cmdlet에 대한 도움말 파일을 찾을 수 없습니다. 일부 도움말만 표시합니다.
-- 이 cmdlet을 포함하는 모듈에 대한 도움말 파일을 다운로드하여 설치하려면 Update-Help를 사용하십시오.
-- 이 cmdlet에 대한 도움말 항목을 온라인으로 보려면 "Get-Help Write-Host -Online"을 입력하거나
https://go.microsoft.com/fwlink/?LinkID=113426(으)로 이동하십시오.
PS C:\>
Plain Text
복사
PS C:\> $str1 = "aa"
PS C:\> $str2 = "bb"
PS C:\> Write-Host $str1 $str2
aa bb
PS C:\>
Plain Text
복사



