다음을 통해 공유


about_Format.ps1xml

간단한 설명

PowerShell 6부터 개체의 기본 보기는 PowerShell 소스 코드에 정의됩니다.

사용자 고유 Format.ps1xml 의 파일을 만들어 개체의 표시를 변경하거나 PowerShell에서 만든 새 개체 형식에 대한 기본 표시를 정의할 수 있습니다.

자세한 설명

PowerShell 6부터 기본 보기는 PowerShell 소스 코드에 정의됩니다. PowerShell 5.1 및 이전 버전의 파일은 Format.ps1xml PowerShell 6 이상 버전에 없습니다.

PowerShell 소스 코드는 PowerShell 콘솔에서 개체의 기본 표시를 정의합니다. 사용자 고유 Format.ps1xml 의 파일을 만들어 개체의 표시를 변경하거나 PowerShell에서 만든 새 개체 형식에 대한 기본 표시를 정의할 수 있습니다.

PowerShell은 개체를 표시할 때 구조화된 서식 파일의 데이터를 사용하여 개체의 기본 표시를 결정합니다. 서식 파일의 데이터는 개체가 테이블 또는 목록에서 렌더링되는지 여부를 결정하며 기본적으로 표시되는 속성을 결정합니다.

서식은 디스플레이에만 영향을 줍니다. 파이프라인에서 전달되는 개체 속성이나 전달 방법에는 영향을 주지 않습니다. Format.ps1xml 파일은 해시 테이블의 출력 형식을 사용자 지정하는 데 사용할 수 없습니다.

서식 파일은 .ps1xml 각 개체의 네 가지 보기를 정의할 수 있습니다.

  • 테이블
  • List
  • 넓게
  • 사용자 지정

예를 들어 명령의 Get-ChildItem 출력이 명령에 Format-List 파이프되는 Format-List 경우 소스 코드에 정의된 목록 보기를 사용하여 파일 및 폴더 개체를 목록으로 표시하는 방법을 결정합니다.

서식 파일에 둘 이상의 개체 보기가 포함된 경우 PowerShell은 개체가 찾은 첫 번째 뷰를 적용합니다.

사용자 지정 Format.ps1xml 파일에서 뷰는 뷰 이름, 적용할 수 있는 개체의 형식, 열 머리글 및 보기 본문에 표시되는 속성을 설명하는 XML 태그 집합으로 정의됩니다. 파일의 Format.ps1xml 형식은 데이터가 사용자에게 표시되기 직전에 적용됩니다.

새 Format.ps1xml 파일 만들기

기존 개체 뷰의 표시 형식을 변경하거나 새 개체에 대한 보기를 추가하려면 사용자 고유 Format.ps1xml 의 파일을 만든 다음 PowerShell 세션에 추가합니다.

사용자 지정 보기를 정의하는 파일을 만들 Format.ps1xml 려면 Get-FormatDataExport-FormatData cmdlet을 사용합니다. 텍스트 편집기를 사용하여 파일을 편집합니다. 파일은 PowerShell에서 액세스할 수 있는 디렉터리(예: 의 하위 디렉터리 $HOME)에 저장할 수 있습니다.

현재 보기의 서식을 변경하려면 서식 파일에서 보기를 찾은 다음 태그를 사용하여 보기를 변경합니다. 새 개체 형식에 대한 뷰를 만들려면 새 뷰를 만들거나 기존 보기를 모델로 사용합니다. 태그는 다음 섹션에서 설명합니다. 그런 다음 파일의 다른 모든 보기를 삭제하여 파일을 검사하는 모든 사용자에게 변경 내용이 분명하게 표시되도록 할 수 있습니다.

변경 내용을 저장한 후 Update-FormatData를 사용하여 PowerShell 세션에 새 파일을 추가합니다. 뷰가 기본 제공 파일에 정의된 보기보다 우선하도록 하려면 PrependPath 매개 변수를 사용합니다. Update-FormatData 는 현재 세션에만 영향을 줍니다. 이후의 모든 세션을 변경하려면 PowerShell 프로필에 Update-FormatData 명령을 추가합니다.

예: 문화권 개체에 일정 데이터 추가

이 예제에서는 현재 PowerShell 세션의 cmdlet에 의해 생성된 문화권 개체 System.Globalization.CultureInfoGet-Culture 서식을 변경하는 방법을 보여줍니다. 예제의 명령은 문화권 개체의 기본 테이블 뷰 표시에 Calendar 속성을 추가합니다.

시작하려면 소스 코드 파일에서 서식 데이터를 가져와 문화권 개체의 현재 뷰를 포함하는 파일을 만듭니 Format.ps1xml 다.

Get-FormatData -TypeName System.Globalization.CultureInfo |
  Export-FormatData -Path $HOME\Format\CultureInfo.Format.ps1xml

CultureInfo.Format.ps1xml Visual Studio Code와 같은 XML 또는 텍스트 편집기에서 파일을 엽니다. 다음 XML은 CultureInfo 개체의 뷰를 정의합니다.

파일은 CultureInfo.Format.ps1xml 다음 샘플과 같습니다.

<?xml version="1.0" encoding="utf-8"?>
<Configuration>
  <ViewDefinitions>
    <View>
      <Name>System.Globalization.CultureInfo</Name>
      <ViewSelectedBy>
        <TypeName>System.Globalization.CultureInfo</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Width>16</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Width>16</Width>
          </TableColumnHeader>
          <TableColumnHeader />
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <PropertyName>LCID</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Name</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>DisplayName</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
  </ViewDefinitions>
</Configuration>

새 태그 집합 <TableColumnHeader>추가하여 Calendar 속성에 대한 새 열을 만듭니다. Calendar 속성의 값은 길 수 있으므로 45자 값을 으로 <Width>지정합니다.

<TableHeaders>
  <TableColumnHeader>
    <Width>16</Width>
  </TableColumnHeader>
  <TableColumnHeader>
    <Width>16</Width>
  </TableColumnHeader>
  <TableColumnHeader>
    <Width>45</Width>
  </TableColumnHeader>
  <TableColumnHeader/>
</TableHeaders>

및 태그를 사용하여 테이블 행에 Calendar<TableColumnItem><PropertyName 대한 새 열 항목을 추가합니다.

<TableRowEntries>
  <TableRowEntry>
    <TableColumnItems>
      <TableColumnItem>
        <PropertyName>LCID</PropertyName>
      </TableColumnItem>
      <TableColumnItem>
        <PropertyName>Name</PropertyName>
      </TableColumnItem>
      <TableColumnItem>
        <PropertyName>Calendar</PropertyName>
      </TableColumnItem>
      <TableColumnItem>
        <PropertyName>DisplayName</PropertyName>
      </TableColumnItem>
    </TableColumnItems>
  </TableRowEntry>
</TableRowEntries>

파일을 저장 후 닫습니다. 현재 PowerShell 세션에 새 서식 파일을 추가하는 데 사용합니다 Update-FormatData .

이 예제에서는 PrependPath 매개 변수를 사용하여 새 파일을 원래 파일보다 높은 우선 순위 순서로 배치합니다. 자세한 내용은 Update-FormatData를 참조하세요.

Update-FormatData -PrependPath $HOME\Format\CultureInfo.Format.ps1xml

변경 사항을 테스트하려면 Calendar 속성을 포함하는 출력을 입력 Get-Culture 하고 검토합니다.

Get-Culture
LCID  Name   Calendar                                DisplayName
----  ----   --------                                -----------
1033  en-US  System.Globalization.GregorianCalendar  English (United States)

Format.ps1xml 파일의 XML

전체 스키마 정의는 GitHub의 PowerShell 소스 코드 리포지토리에 있는 Format.xsd 에서 찾을 수 있습니다.

각 파일의 ViewDefinitions 섹션에는 <View>Format.ps1xml 보기를 정의하는 태그가 포함되어 있습니다. 일반적인 <View> 태그에는 다음 태그가 포함됩니다.

  • <Name> 는 뷰의 이름을 식별합니다.
  • <ViewSelectedBy> 는 뷰가 적용되는 개체 형식 또는 형식을 지정합니다.
  • <GroupBy> 는 뷰의 항목을 그룹으로 결합하는 방법을 지정합니다.
  • <TableControl>, <ListControl><WideControl><CustomControl> 각 항목이 표시되는 방법을 지정하는 태그를 포함합니다.

ViewSelectedBy 태그

태그에는 <ViewSelectedBy> 뷰가 <TypeName> 적용되는 각 개체 형식에 대한 태그가 포함될 수 있습니다. 또는 태그를 <SelectionSetName> 사용하여 다른 곳에서 정의된 선택 집합을 참조하는 태그를 <SelectionSet> 포함할 수 있습니다.

GroupBy 태그

태그에는 <GroupBy><PropertyName> 항목을 그룹화할 개체 속성을 지정하는 태그가 포함되어 있습니다. 또한 각 그룹의 레이블로 사용할 문자열을 지정하는 태그 또는 <CustomControlName> 태그를 사용하여 <Control> 다른 곳에서 정의된 사용자 지정 컨트롤을 참조하는 태그를 포함합니다<Label>. 태그에는 <Control><Name> 태그와 태그가 <CustomControl> 포함됩니다.

TableControlTag

태그는 <TableControl> 일반적으로 테이블의 머리 및 <TableRowEntries> 행에 대한 서식을 정의하는 태그와 함께 포함 <TableHeaders> 됩니다. 태그에는 <TableHeaders> 일반적으로 태그를 <TableColumnHeader> 포함하는 태그와 <Alignment> 태그가 포함<Width><Label>됩니다. 태그에는 <TableRowEntries> 테이블의 <TableRowEntry> 각 행에 대한 태그가 포함됩니다. 태그는 <TableRowEntry> 행의 <TableColumnItems> 각 열에 대한 태그를 <TableColumnItem> 포함하는 태그를 포함합니다. 일반적으로 <TableColumnItem> 태그에는 정의된 위치에 표시할 개체 속성을 식별하는 태그 또는 <ScriptBlock> 위치에 표시할 결과를 계산하는 스크립트 코드가 포함된 태그가 포함 <PropertyName> 됩니다.

참고 항목

스크립트 블록은 계산 결과가 유용할 수 있는 위치의 다른 곳에서도 사용할 수 있습니다.

태그에는 <TableColumnItem> 속성 또는 계산 결과가 표시되는 방법을 지정하는 태그가 포함될 <FormatString> 수도 있습니다.

ListControl 태그

태그는 <ListControl> 일반적으로 태그를 <ListEntries> 포함합니다. 태그에 <ListEntries> 태그가 <ListEntry> 포함됩니다. 태그에 <ListEntry> 태그가 <ListItems> 포함됩니다. 태그에는 <ListItems> 태그가 <ListItem> 포함된 태그가 포함되어 <PropertyName> 있습니다. 태그는 <PropertyName> 목록의 지정된 위치에 표시할 개체 속성을 지정합니다. 선택 집합 <ListControl> 을 사용하여 뷰 선택을 정의하는 경우 태그와 <ListEntry> 태그에 하나 이상의 <TypeName> 태그가 포함된 태그가 포함될 <EntrySelectedBy> 수도 있습니다. 이러한 <TypeName> 태그는 태그가 <ListControl> 표시할 개체 형식을 지정합니다.

WideControl 태그

태그는 <WideControl> 일반적으로 태그를 <WideEntries> 포함합니다. 태그에는 <WideEntries> 하나 이상의 <WideEntry> 태그가 포함됩니다. 태그에는 <WideEntry> 하나의 <WideItem> 태그가 포함됩니다.

태그는 <WideItem> 태그 또는 태그를 <PropertyName><ScriptBlock> 포함해야 합니다. 태그는 <PropertyName> 뷰의 지정된 위치에 표시할 속성을 지정합니다. 태그는 <ScriptBlock> 뷰의 지정된 위치에 평가 및 표시할 스크립트를 지정합니다.

태그에는 <WideItem> 속성을 표시하는 방법을 지정하는 태그가 포함될 <FormatString> 수 있습니다.

CustomControl 태그

태그를 <CustomControl> 사용하면 스크립트 블록을 사용하여 형식을 정의할 수 있습니다. 태그는 <CustomControl> 일반적으로 여러 <CustomEntry> 태그를 <CustomEntries> 포함하는 태그를 포함합니다. 각 <CustomEntry> 태그에는 뷰에서 지정한 <CustomItem> 위치의 내용과 서식을 지정하는 다양한 태그를 포함할 수 있는 태그(예: , <Indentation><ExpressionBinding><NewLine> 태그)<Text>가 포함됩니다.

Format.ps1xml 파일 사용 추적

파일 로드 또는 애플리케이션에서 오류를 검색하려면 Name 매개 변수 값 Format.ps1xml 으로 다음 형식 구성 요소와 함께 cmdlet을 사용합니다Trace-Command.

  • FormatFileLoading
  • FormatViewBinding

자세한 내용은 Trace-CommandGet-TraceSource를 참조하세요.

Format.ps1xml 파일 서명

파일 사용자를 보호하려면 디지털 서명을 사용하여 파일에 서명합니다 Format.ps1xml . 자세한 내용은 about_Signing 참조하세요.

Format-Table 사용자 지정 보기에 대한 샘플 XML

다음 XML 샘플에서는 에서 만든 System.IO.DirectoryInfoSystem.IO.FileInfo 개체에 대한 사용자 지정 보기를 만듭니다Format-Table.Get-ChildItem 사용자 지정 뷰의 이름은 mygciview이며 CreationTime 열을 테이블에 추가합니다.

사용자 지정 보기를 만들려면 및 Export-FormatData cmdlet을 사용하여 Get-FormatData 파일을 생성 .ps1xml 합니다. 그런 다음 파일을 편집 .ps1xml 하여 사용자 지정 보기에 대한 코드를 만듭니다. PowerShell .ps1xml 에서 액세스할 수 있는 모든 디렉터리에 파일을 저장할 수 있습니다. 예를 들어 .의 $HOME하위 디렉터리입니다.

.ps1xml 파일을 만든 후 cmdlet을 Update-FormatData 사용하여 현재 PowerShell 세션에 보기를 포함합니다. 또는 모든 PowerShell 세션에서 사용할 수 있는 보기가 필요한 경우 PowerShell 프로필에 업데이트 명령을 추가합니다.

이 예제에서는 사용자 지정 뷰가 테이블 형식을 사용해야 합니다. 그렇지 않으면 Format-Table 실패합니다.

View 매개 변수와 함께 사용자 Format-Table 지정 뷰의 이름인 mygciview를 지정하고 CreateTime 열을 사용하여 테이블의 출력 서식을 지정합니다. 명령이 실행되는 방법에 대한 예제는 Format-Table을 참조 하세요.

참고 항목

소스 코드에서 서식 지정 XML을 가져와 사용자 지정 보기를 만들 수 있지만 원하는 결과를 얻으려면 더 많은 개발이 필요할 수 있습니다.

다음 Get-FormatData 명령 에서는 PowerShellVersion 매개 변수를 대체하여 모든 로컬 서식 정보가 반환되도록 합니다. 특정 PowerShell 버전 대신 사용합니다 -PowerShellVersion $PSVersionTable.PSVersion .

Get-FormatData -PowerShellVersion 5.1 -TypeName System.IO.DirectoryInfo |
   Export-FormatData -Path ./Mygciview.Format.ps1xml
Update-FormatData -AppendPath ./Mygciview.Format.ps1xml
<?xml version="1.0" encoding="utf-8"?>
<Configuration>
  <ViewDefinitions>
    <View>
      <Name>mygciview</Name>
      <ViewSelectedBy>
        <TypeName>System.IO.DirectoryInfo</TypeName>
        <TypeName>System.IO.FileInfo</TypeName>
      </ViewSelectedBy>
      <GroupBy>
        <PropertyName>PSParentPath</PropertyName>
      </GroupBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Mode</Label>
            <Width>7</Width>
            <Alignment>Left</Alignment>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>LastWriteTime</Label>
            <Width>26</Width>
            <Alignment>Right</Alignment>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>CreationTime</Label>
            <Width>26</Width>
            <Alignment>Right</Alignment>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Length</Label>
            <Width>14</Width>
            <Alignment>Right</Alignment>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Name</Label>
            <Alignment>Left</Alignment>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <Wrap />
            <TableColumnItems>
              <TableColumnItem>
                <PropertyName>ModeWithoutHardLink</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>LastWriteTime</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>CreationTime</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Length</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Name</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
  </ViewDefinitions>
</Configuration>

참고 항목