형식 표를 사용하여 열 너비 제어
목록에서 일부 PC의 마지막 재부팅 시간을 가져오려고 합니다.사용할 때
foreach ($pc in $pclist) {
Get-CimInstance -ClassName win32_operatingsystem -ComputerName $pc |
select csname, lastbootuptime
}
출력은 다음과 같습니다.
csname 마지막 부팅 시간------ --------------CONFA7-L1-1A 7/15/2016 오전 9:55:16CONFA7-L1-1F 5/31/2016 오전 8:51:46CONFA7-L1-1G 6/18/2016 오전 11:09:15CONFA7-L1... 6/26/2016 오후 5:31:31CONFA7-L3... 7/24/2016 오후 3:48:43
깔끔하긴 한데 PC 이름이 길면 전체 이름이 안 보이네요.그래서 파이프라인을 했습니다.Format-Table
:
Get-CimInstance -ClassName win32_operatingsystem -ComputerName $pc |
select csname, lastbootuptime |
Format-Table -HideTableHeaders
그리고 제가 얻는 것은 다음과 같습니다.
CONFA7-L1-1A 7/15/2016 오전 9:55:16 CONFA7-L1-1E 7/21/2016 오후 12:58:16 CONFA7-L1-1F 5/31/2016 오전 8:51:46
여기에는 두 가지 문제가 있습니다.
제목이 없습니다.가 경할우를 하면.
-HideTableHeaders
필요하지 않은 모든 출력에 대한 표제가 있을 것입니다.그 사이에 흰 공간이 많이 있습니다.
기본적으로 첫 번째 것과 유사한 출력만 받으면 되지만 전체 이름을 자르지는 않습니다.이걸 어떻게 고칠 수 있나요?
PetSerAl과 Ansgar Wiechers의 유용한 의견을 요약하고 보완하기 위해:
tl;dr
Get-CimInstance -ClassName win32_operatingsystem -ComputerName $pclist |
Sort-Object CSName |
Format-Table CSName, LastBootUpTime -AutoSize
-AutoSize
(컴퓨터 이름) 열이 모든 값을 전체적으로 표시하는 데 필요한 만큼 넓음을 보장하는 것입니다(단, 이 경우 이 값 자체가 한 줄에 너무 길어서 적합하지 않은 경우).-Wrap
반드시 사용해야 합니다(아래 참조).
Get-CimInstance
일련의 컴퓨터 이름을 사용하므로 루프가 필요하지 않습니다. 그러나 대상 컴퓨터가 병렬로 쿼리되기 때문에 반환되는 개체의 순서는 일반적으로 컴퓨터 이름의 입력 순서와 일치하지 않습니다. 이는 다음과 같이 수정됩니다.Sort-Object CSName
콜.콜.
개별 열의 너비를 제어하는 방법
# Instead of a simple property name, 'prop1', pass a *hashtable*
# (@{ ... }`) with a 'width' entry to Format-Table
PS> [pscustomobject] @{ prop1='1234567890'; prop2='other' } |
Format-Table -Property @{ e='prop1'; width = 5 }, prop2
prop1 prop2
----- -----
1234… other
참고: Windows PowerShell에는 다음과 같은 기능이 있습니다.12...
잘린 값은 3개의 개별 문자를 사용하여 잘라내기 때문에 PowerShell [Core] 6+에서는 단일 문자를 사용하는 것으로 개선되었습니다.…
(수평 타원, ).
표 형식 지정에 대해 자세히 알아보려면 계속 읽어보십시오.
핵심적인 질문은 모든 cmdlet 출력에 적용되는 표 형식 출력의 출력 열 너비를 제어하는 방법에 대한 것입니다.
표 형식 출력에 cmdlet(직접)을 사용합니다. 목적은 다음과 같습니다.Select-Object
출력을 포맷하는 것이 아니라 사용자 지정 개체를 만드는 것입니다. 이러한 개체(예: 미리 정의된 포맷 뷰가 없는 모든 유형의 인스턴스)에 4개 이하의 속성이 있는 경우 기본적으로 다음과 같이 포맷됩니다.Format-Table
할 수는 (그러당신옵적수용없다할않면션그으렇그은); 지것나은을, 은▁behind▁(▁is그;것.Format-List
암시적으로 사용되는.
Format-Table
는 항상 출력 라인을 사용 가능한 화면 폭으로 제한하며, 이는 다음을 의미합니다.- 열이 전혀 인쇄되지 않을 수 있습니다.
- 수 , 은 특히마열값잘누이부리다락은있다같수음으로 표시됩니다.
...
/…
그러나 아래 설명과 같이 인쇄된 모든 열은 잘린 값을 가질 수 있습니다.
더 긴 선을 작성하려면 파이프
Format-Table
을 의산물출로 출력합니다| Out-File -Width <int>
또는| Out-String -Stream -Width <int>
후자를 화면에 인쇄하면 줄이 감깁니다(단, 추가 줄 바꿈은 데이터의 일부가 아닙니다).주의: Windows PowerShell에서는 사용하지 마십시오.
-Width ([int]::MaxValue)
포맷 데이터가 포함된 형식의 테이블 정렬 데이터는 전체 너비의 공백과 함께 무조건 오른쪽 정렬되므로 출력 파일의 메모리/공간이 과도하게 소모될 수 있으며 메모리가 부족할 수도 있습니다.PowerShell Core에서는 이 문제가 v6.1 이상에서 해결되었습니다.Windows(Unix와 유사한 플랫폼의 PowerShell Core에서는 작동하지 않음)에서는 다음을 사용할 수 있습니다.
[console]::BufferWidth = <column-count>
화면 버퍼를 넓혀서 줄이 길어지지 않고 가로 스크롤이 필요합니다.
또한 Windows에서는 ISE가 아닌 일반 콘솔에서만 작동합니다.
적합할 열 수를 간접적으로 결정하는 열 너비를 제어하려면 다음 모수를 사용합니다.
-AutoSize
말을Format-Table
모든 데이터 값을 적합하도록 필요한 만큼의 너비로 열을 만드는 것이지만, 이 경우 표시되는 열 수가 더 적을 수 있습니다(일반적으로 더 많은 열).-Wrap
절단을 방지하기 위해 필요한 경우 열 값이 여러 줄에 걸쳐지도록 합니다. 다시 말해, 자동으로 결정되거나 고정된 열 너비(를 통해 지정됨)인 경우 마지막 열뿐만 아니라 모든Thanks, zett42. 열에도 적용될 수 있습니다.width
다음과 같이 입력)이 특정 값으로 초과됩니다.사용자 지정 열 너비를 지정하려면 항목이 있는 해시 테이블을 인수로 전달합니다(이를 계산된 속성이라고 함).
Format-Table
의-Property
매개 변수. 예: 다음 예제에서는 첫 번째 출력 열을 5자로 제한합니다.[pscustomobject] @{ prop1='1234567890'; prop2='other' } | Format-Table -Property @{ e='prop1'; width = 5 }, prop2
기본적으로 값의 끝에 적용되는 잘라내기가 발생하는 경우 잘라내기 표시기
...
/…
항상 잘린 값의 마지막 3자(Windows PowerShell의 경우) / 마지막 문자(PowerShell [Core] 6+의 경우)를 차지합니다. 위의 예에서는prop1
는 다음과 같이 .12...
/1234…
총 5챠 동안.대신 값의 시작을 자르려면 열을 오른쪽 정렬로 변경해야 합니다.
alignment = 'right'
:'left'
,'center'
세 번째 옵션입니다. 이 두 옵션 모두 값의 끝을 잘라냅니다.값의 시작 부분에서 잘라내는 동안 왼쪽 정렬을 유지하려면 스크립트 블록에서 사용자 정의 식을 사용해야 합니다.
{ ... }
에e
(expression
항목:[pscustomobject] @{ prop1='1234567890'; prop2='other' } | Format-Table -Property @{ n='prop1'; e={ $_.prop1 -replace '^.+(.{4})$', '…$1'}; width = 5 }, prop2
참고: 하나 이상의 사용자 정의 너비를 지정하면 출력할 모든 속성을 명시적으로 열거해야 합니다.
-Property
사용자 정의 [1]너비가 필요 없는 인수도 마찬가지입니다.
PowerShell 7.1 기준 주의 사항:
zett42가 지적했듯이 모든 열이 동일한 사용자 정의 너비를 가질 경우 이 요구 사항을 기술적으로 무시할 수 있습니다. 왜냐하면 속성 이름 문자열을e
(Expression
해시 테이블 항목은 와일드카드 패턴으로 해석되므로 해당 문자열은'*'
모든 속성 이름과 일치합니다. 예:
[pscustomobject] @{ a=1; b=2 } | Format-Table @{ e='*'; width=10 }
를 일정 트림하고 폭을▁a▁if▁past▁pass▁you▁widths를 전달할 수 있습니다.Width
각 속성 특성에 대한 속성입니다.
예를 들어 데이터를 다음과 같이 표시하려면 다음과 같이 하십시오.
Column 1 Column 2 Column 3 Column 4
-------- -------- -------- --------
Data Lorem ip... Lorem ip... Important data
이 기본입니다.Format-Table
구문(명시 속성 목록 포함):
$data | Format-Table -Property Col1, Col2, Col3, Col4 -AutoSize
속성 이름만 전달하는 대신 다음에 메타데이터를 추가할 수 있습니다.
$a = @{Expression={$_.Col1}; Label="Column 1"; Width=30},
@{Expression={$_.Col2}; Label="Column 2"; Width=30},
@{Expression={$_.Col3}; Label="Column 3"; Width=30},
@{Expression={$_.Col4}; Label="Column 4"; Width=30}
$data | Format-Table -Property $a
참고: 이것이 mklement0의 더 완전한 답변 하단에 설명되어 있다는 것을 알고 있지만, 만약 이것이 당신의 사용 사례이고 당신이 빠르게 스크롤하고 있다면, 나는 이것이 이 전략을 높은 수준에서 강조하는 데 도움이 되기를 바랍니다.
언급URL : https://stackoverflow.com/questions/38554966/controlling-column-widths-with-format-table
'programing' 카테고리의 다른 글
구속조건 레이아웃에서 요소 중심화 방법 (0) | 2023.08.30 |
---|---|
마리아에 대한 연결 문자열DB (0) | 2023.08.30 |
구문 오류: 잘못된 정규식 플래그 agax, Javascript (0) | 2023.08.30 |
도커 파일:여러 환경 변수를 한 줄로 설정 (0) | 2023.08.30 |
이미지 처리를 위한 매우 빠른 Memcpy? (0) | 2023.08.30 |