Я хочу предложить (возможно, применить, но я еще не уверен в семантике) конкретный формат для вывода функции PowerShell.
about_Format. ps1xml (версия для PowerShell 7.1) говорит следующее: «Начиная с PowerShell 6, представления по умолчанию определены в исходном коде PowerShell. Файлы Format.ps1xml из PowerShell 5.1 и более ранних версий отсутствуют в PowerShell 6 и более поздних версиях. '. Затем в статье объясняется, как файлы Format.ps1xml можно использовать для изменения отображения объектов и т.д. / сильный>
Это вызывает несколько вопросов:
- Хотя они «не существуют», можно ли создавать / использовать файлы Format.ps1xml в версиях PowerShell выше 5.1?
- Могут они или нет, есть ли лучшая практика предложить PowerShell, как определенная функция должна форматировать возвращаемые данные? Обратите внимание на то, что "подсказка" является неотъемлемой частью того, что конвейерный характер вывода PowerShell должен быть сохранен: пользователь по-прежнему должен иметь возможность направлять вывод функции в Format-List или ForEach-Object и т. Д.
Например, командлет Get-ADUser
возвращает объекты, отформатированные с помощью Format-List
. Если я напишу функцию с именем Search-ADUser
, которая вызывает Get-ADUser
внутри и возвращает некоторые из этих объектов, вывод также будет отформатирован как список. Передача вывода в Format-Table
перед его возвратом не удовлетворяет моим требованиям, потому что тогда вывод не будет обрабатываться как отдельные объекты в конвейере.
Пример кода:
function Search-ADUser {
param (
$Name,
[ValidateNotNullOrEmpty()][string[]]$Properties = @('Enabled', 'SamAccountName', 'Name', 'emailAddress', 'proxyAddresses')
)
return Get-ADUser -Filter ('name -like "*{0}*"' -F $Name) -Properties $Properties | Select-Object $Properties
}
Лучшие ответы должны касаться обоих вопросов, хотя второй более существенен.
Неприемлемые ответы включают предложения о том, что функция не должна принудительно применять формат и / или что пользователь должен направлять вывод функции в выбранное средство форматирования. Это очень субъективная позиция, и вопрос о том, придерживается ее большинство или нет, не имеет значения.
Я искал force function format #powershell-7.0
перед публикацией, но ни один из результатов поиска не оказался релевантным.
Update-FormatData
, так что кажется, что эти файлы все еще поддерживаются. - person boxdog   schedule 15.06.2021