使用PowerShell Invoke-Command的FilePath参数报错原因咨询
问题原因及解决方法
核心原因
Invoke-Command的-FilePath参数是远程执行专属参数集,它的设计逻辑是将本地脚本文件复制到远程目标机器上执行,因此必须搭配远程目标参数(如-ComputerName、-Session)才能使用,单独使用会触发参数集解析错误。
两种调用方式的差异
- 使用
Invoke-Command {& .\hello-world.ps1}时,调用的是脚本块参数集,这个参数集默认支持本地执行(未指定远程参数时,PowerShell会在本地运行脚本块内容),也可搭配远程参数实现远程执行。 - 而
-FilePath参数没有本地执行的参数集支持,必须明确指定远程目标,否则PowerShell无法识别你要执行的参数组合,从而报错。
解决方式
- 本地执行场景:直接运行脚本即可,无需借助
Invoke-Command:
若一定要用.\hello-world.ps1Invoke-Command,继续保留脚本块调用方式。 - 远程执行场景:搭配远程参数使用
-FilePath,例如(以本地远程会话为例,需提前开启WinRM):Invoke-Command -ComputerName localhost -FilePath .\hello-world.ps1
内容的提问来源于stack exchange,提问作者SimonAx
相关产品推荐
相关产品推荐

