“ Get-Command”如何返回不是真正命令的“命令”?

时间:2019-03-27 22:15:36

标签: windows powershell windows-server powershell-v5.0 powershell-v5.1

'Get-Command'返回Powershell会话中所有可用命令的列表。

当传递不是命令的字符串时,以下代码的计算结果为$ false:

function f($x) {[bool](Get-Command $x -ErrorAction SilentlyContinue)}

确实如此:

PS C:\Windows\system32> f ls
True
PS C:\Windows\system32> f alkdsjfasd
False

因此您会认为以下代码将返回不是命令的命令列表,即为空列表:

Get-Command | Where-Object {[bool](Get-Command $_ -ErrorAction SilentlyContinue) -eq $false}

除非不是。它将在干净的Windows Server 2016 VM上返回以下内容:

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Function        Get-IseSnippet                                     1.0.0.0    ISE
Function        Import-IseSnippet                                  1.0.0.0    ISE
Function        New-IseSnippet                                     1.0.0.0    ISE
Function        Start-AutologgerConfig                             1.0.0.0    EventTracingManagement
Cmdlet          Add-ClusteriSCSITargetServerRole                   2.0.0.0    IscsiTarget

如果我稍等片刻并再次运行相同的命令,它将返回更长的列表:

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Function        Add-RDServer                                       2.0.0.0    RemoteDesktop
Function        Add-RDSessionHost                                  2.0.0.0    RemoteDesktop
Function        Add-RDVirtualDesktopToCollection                   2.0.0.0    RemoteDesktop
Function        Disable-RDVirtualDesktopADMachineAccountReuse      2.0.0.0    RemoteDesktop
Function        Get-IseSnippet                                     1.0.0.0    ISE
...
Function        Test-RDVirtualDesktopADMachineAccountReuse         2.0.0.0    RemoteDesktop
Function        Update-RDVirtualDesktopCollection                  2.0.0.0    RemoteDesktop

例如,我已经检查了RemoteDesktop模块中的文件,并且能够找到“缺失”的功能。

这是怎么回事? “ Get-Command”如何返回不是命令的“命令”?

0 个答案:

没有答案