выбор отдельных элементов из столбца в powershell
Если я выдаю следующую команду в PowerShell, я получаю много строк обратно.
PS C:Usersbenh> get-command
CommandType Name ModuleName Definition
----------- ---- ---------- ----------
Cmdlet Get-Variable Microsoft.PowerShell.Utility Get-Variable...
Cmdlet Get-WebAppDomain WebAdministration Get-WebAppDomain...
Cmdlet Get-WebApplication WebAdministration Get-WebApplication...
Cmdlet Get-WebAppPoolState WebAdministration Get-WebAppPoolState...
...
Cmdlet Get-WinEvent Microsoft.PowerShell.Diagnostics Get-WinEvent...
Cmdlet Get-WmiObject Microsoft.PowerShell.Management Get-WmiObject...
Cmdlet Get-WSManCredSSP Microsoft.WSMan.Management Get-WSManCredSSP...
Cmdlet Get-WSManInstance Microsoft.WSMan.Management Get-WSManInstance...
Cmdlet Group-Object Microsoft.PowerShell.Utility Group-Object...
Cmdlet Import-Alias Microsoft.PowerShell.Utility Import-Alias...
Cmdlet Import-Clixml Microsoft.PowerShell.Utility Import-Clixml...
Cmdlet Import-Counter Microsoft.PowerShell.Diagnostics Import-Counter...
Cmdlet Import-Csv Microsoft.PowerShell.Utility Import-Csv...
Cmdlet Import-LocalizedData Microsoft.PowerShell.Utility Import-LocalizedData...
Cmdlet Import-Module Microsoft.PowerShell.Core ...
Что Я хочу чтобы сделать, это получить все различные ModuleNames, возвращаемые командлетом get-команды. Как это сделать с помощью PowerShell?
в псевдо-C#:
PowerShell.Exec("Get-Command").Select(a=> a.ModuleName).Distinct();
спасибо заранее!
4 ответов
вы пробовали что-то подобное?
get-command | select ModuleName | sort-object -Property ModuleName -Unique
ниже 2 команды выведут тот же результат, но первая будет отсортирована и немного дороже во время выполнения.
время выполнения будет учитываться больше, когда у вас есть большое количество элементов, например, если вы импортируете csv
файл из 30 000 строк. Тогда второй вариант будет быстрее, и как только вы получите уникальные значения, отсортируйте их, если вам нужно, потому что здесь сортировка будет выполнена на гораздо меньшем количестве элементов, следовательно, лучше спектакль.
1.
get-command | select ModuleName | sort-object -Property ModuleName -Unique
# This will give you the execution time
Measure-Command {get-command | select ModuleName | sort-object -Property ModuleName -Unique}
2.
get-command | select ModuleName -Unique
# This will give you the execution time
Measure-Command {get-command | select ModuleName -Unique}