获取powershell的服务问题
出于某种原因,当我在powershell中运行获取powershell的服务问题,powershell,Powershell,出于某种原因,当我在powershell中运行Get Service时,它会抛出一个错误。但是,如果我先运行Set Service,Get Service将一直工作,直到我再次打开powershell。我似乎在网上找不到这个问题。是否有人经历过这种情况,如果有,是否有解决方案 错误:“程序'Get Service'无法运行:没有应用程序与此操作的指定文件关联,行:1 char:1” tl;dr 从系统中删除文件C:\Windows\System32\Get Service——它不应该在那里 之后
Get Service
时,它会抛出一个错误。但是,如果我先运行Set Service
,Get Service
将一直工作,直到我再次打开powershell。我似乎在网上找不到这个问题。是否有人经历过这种情况,如果有,是否有解决方案
错误:“程序'Get Service'无法运行:没有应用程序与此操作的指定文件关联,行:1 char:1”
tl;dr
从系统中删除文件C:\Windows\System32\Get Service
——它不应该在那里
之后,Get Service
将再次开始工作
如果您尚未在会话中导入模块
Microsoft.PowerShell.Management
,PowerShell将首先尝试打开系统上可能意外创建的、无扩展名的C:\Windows\System32\Get Service
文件。
- PowerShell试图打开它通过
找到的不可执行文件(一个没有文件扩展名的文件),这本身就有问题-请参阅$env:PATH
Microsoft.PowerShell.Management
模块包含Get Service
和Set Service
cmdlet(以及其他命令),通常在您第一次尝试在会话中执行其中一个命令时按需导入
从技术上讲,由于模块位于已知位置,因此它受到限制
但是,如果模块尚未导入,则位于环境变量$env:PATH
中列出的目录之一中的同名外部程序/文档文件优先,默认情况下执行/打开该文件。
由于您案例中的文件没有文件扩展名,Windows shell不知道如何打开它,导致出现错误消息(如果您在文件资源管理器中双击该文件,则会出现“如何打开此文件?”对话框)
因此,尝试单独执行名为Get Service
的命令不会触发导入Microsoft.PowerShell.Management
模块-外部文件不断被调用
相反,由于Set-Service
cmdlet不受外部文件的影响,因此调用它会隐式导入模块
导入模块后,提交命令获取服务
将调用cmdlet而不是外部文件,因为随后,cmdlet将优先于具有相同名称的外部程序
虽然这种情况下的区别使执行行为难以预测,但出于性能原因,始终优先考虑已知cmdlet,而不管其模块是否已导入当前会话,这不是一种选择:请参阅中的讨论
要明确地从给定模块调用命令,请在命令名前加上模块名,然后加上
\
:
也就是说,即使没有导入模块,您也可以按如下方式调用Get-Service
cmdlet:
Microsoft.PowerShell.Management\Get-Service
您为设置服务提供的服务的名称是什么?设置服务后,
(Get命令Get service)。Source
返回什么?@EylM我没有提供任何内容。然后它会提示输入名称,我只需按enter键。之后,Get服务开始工作。@sodawillow由于某种原因,它返回“C:\Windows\System32\Get Service”。运行Set服务后,它返回“Microsoft.PowerShell.Management”。您的C:\Windows\System32
文件夹是否包含Get Service
文件?