Как создать эффект printf в PowerShell - PullRequest
10 голосов
/ 28 марта 2012

Как мне заставить мой сценарий PowerShell печатать информацию в табличном формате по мере выполнения сценария.

В bash я бы сделал это с помощью

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

, чтобы получить

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 ]

19 голосов
/ 28 марта 2012

Попробуйте в консоли PowerShell:

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

Вы можете легко использовать форматирование строки из PowerShell.

Оператор -f представляет собой краткую справку PowerShell для функции String.Format, включая все стандартные и пользовательские форматы поддержки .NET, поддерживающие .

2 голосов
/ 29 марта 2012

Я принял ответ Давида, потому что это то, что я просил. Тем не менее, я решил создать объект по

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>

и в коде сделать

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

для печати записей

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...