Get-Module -Name Microsoft.PowerShell.Utility
ModuleType Version Name ExportedCommands
list 3.1.0.0 Microsoft.PowerShell.Utility {添加成员、添加类型、清除变量、比较对象...}
我想扩展 ExportedCommands 并打印每个命令的名称。
Name ExportedCmdlets
Microsoft.PowerShell.Utility Add-Member
Microsoft.PowerShell.Utility Add-Type
Microsoft.Powershell.Utility Clear-Variable
Microsoft.Powershell.Utility Compare-Object
最佳答案
您可以使用嵌套的 foreach 循环来迭代导出的 cmdlet。如果您查看该属性的对象类型,您会发现它是一个字典。
Get-Module -Name Microsoft.PowerShell.Utility | ForEach-Object {
$_.ExportedCmdlets | Get-Member
}
TypeName: System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Management.Automation.CmdletInfo, System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]
由于本例中的键和名称相同,因此您可以使用其中之一。
Get-Module -Name Microsoft.PowerShell.Utility | ForEach-Object {
foreach($cmdlet in $_.ExportedCmdlets.keys){
[PSCustomObject]@{
Name = $_.Name
Cmdlet = $cmdlet
}
}
}
输出(截断)
Name Cmdlet
---- ------
Microsoft.PowerShell.Utility Add-Member
Microsoft.PowerShell.Utility Add-Type
Microsoft.PowerShell.Utility Clear-Variable
Microsoft.PowerShell.Utility Compare-Object
关于powershell - 在 PowerShell 中混合来自 Select-Object 的扩展属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69745395/