2012-03-28 15 views
8

PowerShellスクリプトを取得して、スクリプトの進行に合わせて情報を表形式で出力する方法を教えてください。PowerShellでprintfエフェクトを作成する方法

bashで、私は

Locale Jar   HelpSet   Exception  Status 
de  help_D150  help_D150      CORRECTED 

es  help_D150  help_D150      OK 

fr  help_D150  help_D150      OK 

it  Locale folder not found 

nl  help_D150  help_D150      CORRECTED 

感謝を取得するために

printf "%s\t%-15.15s" "Locale" "Jar" 
if($verbose);then 
    printf "%-15.15s %-15.15s" "HelpSet" "Exception" 
fi 
printf "\t%s\n" "Status" 
... 
printf "%s\t%-15.15s" $locale $helpFileName 
if($verbose); then 
    printf "%-15.15s %-15.15s" "$helpSetName" ${exclusion[$helpFileName]} 
fi 
status="OK" 
... 
if ($fixed); then 
    status="CORRECTED" 
fi 
printf "\t%s\n" $status 

することによってこれを行うだろう

答えて

16

あなたのPowerShellコンソールでこれを試してみてください:

"{0}`t{1,-15}{2,-15}{3,-15}" -f "Locale", "Jar", "HelpSet", "Exception" 

あなたが使用することができますstring formattingはPowerShellから非常に簡単です。

-f operatorは、standard and customのすべての.NET形式のサポートを含むString.Format関数のPowerShellショートカットです。

+0

この方法では、2つの条件付き列が同じ行ではなく新しい行に印刷されます – rojanu

+0

単一の書式文字列を使用し、すべての列を結合し、印刷したくないargsに$ nullまたは空文字列を使用します。 –

2

私はDavidsの回答を受け入れました。しかし、私は

try{ 
    add-type @' 
namespace FFPS { 
    public class Data { 
     public string Locale; 
     public string JarFile; 
     public string HelpSet; 
     public string CorrectName; 
     public string Status; 
    } 
} 
'@ 
} 
catch{} 

してオブジェクトを作成し、

<?xml version="1.0" encoding="utf-16"?> 
<Configuration> 
    <ViewDefinitions> 
     <View> 
      <Name>ffps.data</Name> 
      <ViewSelectedBy> 
       <TypeName>ffps.data</TypeName> 
      </ViewSelectedBy> 
      <TableControl> 
       <TableHeaders> 
        <TableColumnHeader> 
         <Label>Locale</Label> 
         <Width>6</Width> 
        </TableColumnHeader> 
        <TableColumnHeader> 
         <Label>Jar File</Label> 
         <Width>16</Width> 
        </TableColumnHeader> 
        <TableColumnHeader> 
         <Label>Help Set</Label> 
         <Width>16</Width> 
        </TableColumnHeader> 
        <TableColumnHeader> 
         <Label>Correct Name</Label> 
         <Width>16</Width> 
        </TableColumnHeader> 
        <TableColumnHeader> 
         <Label>Status</Label> 
         <Width>100</Width> 
        </TableColumnHeader> 
       </TableHeaders> 
       <TableRowEntries> 
        <TableRowEntry> 
         <TableColumnItems> 
          <TableColumnItem> 
           <ScriptBlock>$_.Locale</ScriptBlock> 
          </TableColumnItem> 
          <TableColumnItem> 
           <ScriptBlock>$_.JarFile</ScriptBlock> 
          </TableColumnItem> 
          <TableColumnItem> 
           <ScriptBlock>$_.HelpSet</ScriptBlock> 
          </TableColumnItem> 
          <TableColumnItem> 
           <ScriptBlock>$_.CorrectName</ScriptBlock> 
          </TableColumnItem> 
          <TableColumnItem> 
           <ScriptBlock>$_.Status</ScriptBlock> 
          </TableColumnItem> 
         </TableColumnItems> 
        </TableRowEntry> 
       </TableRowEntries> 
      </TableControl> 
     </View> 
    </ViewDefinitions> 
</Configuration> 

とコードで、それを表としてフォーマットするXML形式のファイルを使用することを選択したプリントに

$currentFile = New-Object ffps.data 
$currentFile.Locale = "DE" 
$currentFile.JarFile = "JarFile.Name" 
... 
$currentFile 

を行いますエントリ

関連する問題