为什么 PowerShell 将“job”识别为命令

为什么 PowerShell 将“job”识别为命令

在我的 Powershell 会话中,该词job被识别为“可调用的操作”:

PS C:\Users\Rene\> job
 
Id     Name            PSJobTypeName   State         HasMoreData     Location             Command
--     ----            -------------   -----         -----------     --------             -------
1      Job1            BackgroundJob   Completed     True            localhost            ...
3      Job3            BackgroundJob   Completed     True            localhost            ...
5      Job5            BackgroundJob   Completed     True            localhost            ...
7      Job7            BackgroundJob   Completed     True            localhost            ... 
9      Job9            BackgroundJob   Completed     True            localhost            ...

的输出job与 的输出相同get-job。因此,我假设job是一个函数或别名或 cmdLet。然而,事实似乎并非如此:

PS C:\Users\Rene> get-command job
get-command : The term 'job' is not recognized as the name of a cmdlet, function,
script file, or operable program. Check the spelling of the name, or if a path
was included, verify that the path is correct and try again.

那么,如果job它既不是 cmdlet 也不是函数,也不是别名,也不是脚本文件,那它是什么?

答案1

你已经了解了 Powershell 如何决定你打算逃跑。至于接下来发生的事情,以下是我所听到的或所看到的:

当您输入命令时,PS 会查找...

  • 您输入的确切命令
  • 查找操作系统路径列表中的精确命令
  • Get-带有前缀的命令

该顺序与我记得的读过或经历过的内容相符,但我可能遗漏了一两步。

虽然我从未找到过关于此问题的任何官方文档,但 Reddit 上的一些人Powershell 子版块过去几年里我发过很多帖子。我假设人们可以深入研究 Powershell GitHub 代码并找到该过程,但我从未这样做过。

我还推测任何以 PS 为重点的代码高尔夫网站也会对所涉及的所有内容有一些想法。

相关内容