Remove-WindowsFeature 的远程调用命令不起作用,因为模块不可用
Remote Invoke-Command to Remove-WindowsFeature does not work as module not available
我创建了一个从 Windows 10 机器(客户端)到 Windows Server 2012 R2 机器(服务器)的 powershell 会话并尝试卸载一个功能:
$session | Invoke-Command -ScriptBlock { Remove-WindowsFeature Server-Gui-Shell }
我收到错误:
Invoke-Command : The term 'Remove-WindowsFeature' 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.
如果我 RDP 到服务器机器并启动 powershell,命令可用,但在客户端机器上不可用,并且没有模块 ServerManager
。
这意味着我在服务器上尝试 运行 的命令需要以某种方式在客户端可用,这对我来说似乎很奇怪。
我是不是漏掉了什么?
Invoke-Command
不接受管道的 -Session
参数值。通过管道它接受输入对象,这些对象将传递给调用的命令:
12345 | Invoke-Command { "Pipeline input: $input" }
# Pipeline input: 12345
由于您的命令没有任何远程调用目标,Invoke-Command
在本地计算机上调用命令。由于本地计算机没有请求的命令,因此会产生错误。
我创建了一个从 Windows 10 机器(客户端)到 Windows Server 2012 R2 机器(服务器)的 powershell 会话并尝试卸载一个功能:
$session | Invoke-Command -ScriptBlock { Remove-WindowsFeature Server-Gui-Shell }
我收到错误:
Invoke-Command : The term 'Remove-WindowsFeature' 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.
如果我 RDP 到服务器机器并启动 powershell,命令可用,但在客户端机器上不可用,并且没有模块 ServerManager
。
这意味着我在服务器上尝试 运行 的命令需要以某种方式在客户端可用,这对我来说似乎很奇怪。
我是不是漏掉了什么?
Invoke-Command
不接受管道的 -Session
参数值。通过管道它接受输入对象,这些对象将传递给调用的命令:
12345 | Invoke-Command { "Pipeline input: $input" }
# Pipeline input: 12345
由于您的命令没有任何远程调用目标,Invoke-Command
在本地计算机上调用命令。由于本地计算机没有请求的命令,因此会产生错误。