#powershell #select #properties
Вопрос:
Get-Module -Name Microsoft.PowerShell.Utility
Имя версии типа модуля Экспортируемые команды
Манифест 3.1.0.0 Microsoft.PowerShell.Утилита {Добавить элемент, Добавить Тип, Очистить Переменную, Сравнить Объект…}
Я хочу расширить экспортируемые команды и напечатать имя каждой из них.
Name ExportedCmdlets Microsoft.PowerShell.Utility Add-Member Microsoft.PowerShell.Utility Add-Type Microsoft.Powershell.Utility Clear-Variable Microsoft.Powershell.Utility Compare-Object
Комментарии:
1. На самом деле это не ответ на проблему, которую вы пытаетесь решить в целом, но вы должны быть в состоянии получить этот список
Get-Command -Module Microsoft.PowerShell.Utility
.
Ответ №1:
Вы можете использовать вложенный цикл foreach для перебора экспортированных командлетов. Если вы посмотрите на тип объекта, которым является это свойство, вы увидите, что это словарь.
Get-Module -Name Microsoft.PowerShell.Utility | ForEach-Object { $_.ExportedCmdlets | Get-Member } TypeName: System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Management.Automation.CmdletInfo, System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]
Поскольку ключи и имена в этом случае совпадают, вы можете использовать любой из них.
Get-Module -Name Microsoft.PowerShell.Utility | ForEach-Object { foreach($cmdlet in $_.ExportedCmdlets.keys){ [PSCustomObject]@{ Name = $_.Name Cmdlet = $cmdlet } } }
Вывод (усеченный)
Name Cmdlet ---- ------ Microsoft.PowerShell.Utility Add-Member Microsoft.PowerShell.Utility Add-Type Microsoft.PowerShell.Utility Clear-Variable Microsoft.PowerShell.Utility Compare-Object