24

如何确定给定 cmdlet 的模块,以便从覆盖 cmdlet 的函数直接调用?

例如,我应该如何找出 Start-Transcript 位于 Microsoft.Powershell.Host 中?

Get-Module Start-Transcript

不产生任何东西


更新下面的答案。

这是输出:

PS C:\Windows> Get-Command -type cmdlet start-transcript | fl *

HelpUri             : http://go.microsoft.com/fwlink/?LinkID=113408
DLL                 : C:\Windows\assembly\GAC_MSIL\Microsoft.PowerShell.ConsoleHost\1.0.0.0__31bf3856ad364e35\Microsoft
                      .PowerShell.ConsoleHost.dll
Verb                : Start
Noun                : Transcript
HelpFile            : Microsoft.PowerShell.ConsoleHost.dll-Help.xml
PSSnapIn            : Microsoft.PowerShell.Host
ImplementingType    : Microsoft.PowerShell.Commands.StartTranscriptCommand
Definition          : Start-Transcript [[-Path] <String>] [-Append] [-Force] [-NoClobber] [-Verbose] [-Debug] [-ErrorAc
                      tion <ActionPreference>] [-WarningAction <ActionPreference>] [-ErrorVariable <String>] [-WarningV
                      ariable <String>] [-OutVariable <String>] [-OutBuffer <Int32>] [-WhatIf] [-Confirm]

DefaultParameterSet :
OutputType          : {}
Name                : Start-Transcript
CommandType         : Cmdlet
Visibility          : Public
ModuleName          : Microsoft.PowerShell.Host <------------ HERE IT IS
Module              :
Parameters          : {[Path, System.Management.Automation.ParameterMetadata], [Append, System.Management.Automation.Pa
                      rameterMetadata], [Force, System.Management.Automation.ParameterMetadata], [NoClobber, System.Man
                      agement.Automation.ParameterMetadata]...}
ParameterSets       : {[[-Path] <String>] [-Append] [-Force] [-NoClobber] [-Verbose] [-Debug] [-ErrorAction <ActionPref
                      erence>] [-WarningAction <ActionPreference>] [-ErrorVariable <String>] [-WarningVariable <String>
                      ] [-OutVariable <String>] [-OutBuffer <Int32>] [-WhatIf] [-Confirm]}
4

2 回答 2

19

利用

Get-Command Start-Transcript | fl *

查找有关命令的信息。

于 2012-06-01T17:44:37.813 回答
9

PowerShell 中有几个选项。为了将结果缩小到您正在寻找的特定信息 - 可以使用以下方法之一:

(Get-Command -Name Start-Transcript).ModuleName

或者

Get-Command -Name Start-Transcript | Select-Object -Property ModuleName

或者

Get-Command -Name Start-Transcript | Format-List -Property ModuleName

笔记:

当您在 PowerShell 脚本中使用它或开发自定义 PowerShell 模块时,通常认为使用完整的 cmdlet 名称而不是别名(如 fl、ft、select 等)是一种很好的做法。它增加了代码的可读性。

于 2017-05-10T15:12:11.520 回答