Как создать эффект printf в PowerShell
Как я могу получить сценарий PowerShell для печати информации в табличном формате по мере выполнения сценария.
в bash, я бы сделал это
printf "%st%-15.15s" "Locale" "Jar"
if($verbose);then
printf "%-15.15s %-15.15s" "HelpSet" "Exception"
fi
printf "t%sn" "Status"
...
printf "%st%-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%sn" $status
и
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
спасибо
2 ответов
попробуйте это в консоли PowerShell:
"{0}`t{1,-15}{2,-15}{3,-15}" -f "Locale", "Jar", "HelpSet", "Exception"
можно использовать строка форматирования довольно легко из PowerShell.
на -f
оператор это короткий путь PowerShell к String.Format
Я принял ответ Дэвида, как это то, что я просил. Тем не менее, я решил создать объект
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 в формат таблицы
<?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>
и в коде do
$currentFile = New-Object ffps.data
$currentFile.Locale = "DE"
$currentFile.JarFile = "JarFile.Name"
...
$currentFile
для печати записи