从PowerShell中的列中select不同的项目

如果我在PowerShell中发出以下命令,则会返回很多行。

PS C:\Users\benh> 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 ... 

想要做的是获取由Get-Command返回的所有不同的ModuleNames。 我怎样才能用PowerShell做到这一点?

在伪C#中:

 PowerShell.Exec("Get-Command").Select(a=> a.ModuleName).Distinct(); 

提前致谢!

你有没有尝试过这样的事情?

 get-command | select ModuleName | sort-object -Property ModuleName -Unique 

更短:

 get-command | select-object moduleName -unique 

另外一个select:

 Get-Command | Group-Object ModuleName -NoElement | Select-Object Name 

下面的两个命令会带来相同的结果,但是第一个命令会被sorting并且执行时间有点贵。

如果您有大量项目,则会考虑执行时间。例如,如果要导入30,000行的csv文件。 然后第二个选项会更快,一旦你得到独特的价值sorting他们,如果你需要,因为在这里sorting将less得多的项目,从而更好的performance。

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} 
Interesting Posts