Ben*_*n H 49 powershell distinct-values
如果我在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 ...
Run Code Online (Sandbox Code Playgroud)
我想要做的是获取Get-Command返回的所有不同的ModuleNames.如何使用PowerShell执行此操作?
在伪C#中:
PowerShell.Exec("Get-Command").Select(a=> a.ModuleName).Distinct();
Run Code Online (Sandbox Code Playgroud)
提前致谢!
srg*_*erg 75
你尝试过这样的事吗?
get-command | select ModuleName | sort-object -Property ModuleName -Unique
Run Code Online (Sandbox Code Playgroud)
Mik*_*ard 59
更短:
get-command | select-object moduleName -unique
Run Code Online (Sandbox Code Playgroud)
另外一个选项:
Get-Command | Group-Object ModuleName -NoElement | Select-Object Name
Run Code Online (Sandbox Code Playgroud)
小智 5
低于2的命令将产生相同的结果,但第一个命令将被排序并且执行时间有点昂贵.
当您有大量项目时,将更多地考虑执行时间,例如,如果您要导入csv30,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}
Run Code Online (Sandbox Code Playgroud)
2.
get-command | select ModuleName -Unique
# This will give you the execution time
Measure-Command {get-command | select ModuleName -Unique}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59883 次 |
| 最近记录: |