如果我在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返回的所有不同的ModuleName。我如何使用PowerShell来实现这一点?
在伪C#中:
PowerShell.Exec("Get-Command").Select(a=> a.ModuleName).Distinct();
4条答案
按热度按时间6ojccjat1#
你试过这样的东西吗?
kyvafyod2#
更短:
qco9c6ql3#
下面的两个命令将产生相同的结果,但第一个将排序,并在执行时间有点昂贵。
当你有大量的项目时,执行时间将被更多地考虑,例如,如果你导入30,000行的
csv
文件。那么第二个选项将更快,一旦你得到唯一的值,如果你需要的话,排序它们,因为这里排序将在更少的项目上完成,因此性能更好。1.
nbnkbykc4#
另一种选择: