gpt4 book ai didi

powershell - 在本地计算机上具有FilePath的PowerShell Invoke-Command-模糊参数错误?

转载 作者:行者123 更新时间:2023-12-03 01:27:43 27 4
gpt4 key购买 nike

我想使用Invoke-Command在本地计算机上的文件中运行脚本,以便可以通过-ArgumentList传递参数。我遇到了一个我不明白的错误,所以我简化了命令。当我这样做时:

Invoke-Command -FilePath 'getprocess.ps1'

getprocess.ps1的内容是:
Get-Process

我收到的错误消息是:

Invoke-Command : Parameter set cannot be resolved using the specified named parameters.

At line:1 char:1

+ Invoke-Command -FilePath 'getprocess.ps1'

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : InvalidArgument: (:) [Invoke-Command], ParameterBindingException

+ FullyQualifiedErrorId : AmbiguousParameterSet,Microsoft.PowerShell.Commands.InvokeCommandCommand



我对这个错误消息感到困惑。这是什么意思?我该如何工作?

最佳答案

tl;博士:

  • 不要将 Invoke-Command 用于本地调用-尽管在有限的情况下在技术上是可行的,但从来没有充分的理由这样做。
  • 而是直接调用脚本:
  • .\getprocess.ps1

    注意:与 cmd.exe不同,PowerShell在设计上需要 .\才能执行位于当前目录中的可执行文件。也就是说,为了避免意外执行当前目录中而不是 $env:Path中列出的目录中的可执行文件,PowerShell作为一项安全功能,要求您明确表示要在当前目录中执行某些内容( .)。

    对于脚本块( { ... }),请使用 &call operator(例如 & { Get-Date })。

    出于语法原因,如果脚本被指定为带引号的路径(例如 &)和/或路径包含变量引用(例如, & '.\getprocess.ps1')。

    实际上,正如您指出的 in your own answer一样, & $HOME\getprocess.ps1必须与 -FilePath参数(不幸的是,错误消息是如此通用)。

    参数 -ComputerName的目的是将本地脚本( -FilePath文件)的内容复制到远程计算机上以在其中执行。也就是说,这是一种执行脚本代码的便捷机制,该脚本代码(仅)在远程计算机上本地可用。

    虽然 可以从技术上通过*.ps1 (或更简单地说,通过 -ComputerName localhost / -ComputerName .)定位到本地计算机,但此 并不等同于本地调用:

    每当指定-cn .时-即使使用-ComputerName-都使用PowerShell的远程处理基础结构,它具有 的主要含义:
  • 必须为PowerShell远程设置目标计算机(即使它是本地计算机),请参阅about_Remote_Requirements
  • 如果专门针对本地计算机,则必须在提升的 session 中运行(以管理员身份运行)。
  • 执行将比直接(本地)调用慢得多。
  • 鉴于涉及通过PowerShell基于XML的序列化基础结构进行跨进程封送处理,因此输入和输出数据都可能失去
  • 类型保真度-请参阅this answer
  • 关于powershell - 在本地计算机上具有FilePath的PowerShell Invoke-Command-模糊参数错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60979858/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com