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 ...
私がwantすることは、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
以下の2つのコマンドは同じ結果をもたらしますが、最初のコマンドはソートされ、実行時間が少しかかります。
たとえば、30,000行のcsv
ファイルをインポートする場合、アイテムの数が多い場合、実行時間がより考慮されます。次に、2番目のオプションが高速になります。必要に応じて一意の値を取得したら、必要に応じて並べ替えます。これは、より少ない数のアイテムで並べ替えが行われるため、パフォーマンスが向上するためです。
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}
別のオプション:
Get-Command | Group-Object ModuleName -NoElement | Select-Object Name