在将参数传递到PS文件时,如何使用invoke-command从Windows命令行运行PS文件?

在将参数传递到PS文件时,如何使用invoke-command从Windows命令行运行PS文件? 这是我的脚本:

#TestParams2.ps1

param (
    [string]$Server,[string]$FileFolderName,[string]$VerValue
)

$Server
$FileFolderName
$VerValue

这就是我要称呼它的方式:

powershell.exe invoke-command -FilePath 'C:\temp\TestParams2.ps1' -ArgumentList 'myserver','\\server1\folder name\file.txt','9999'

当我运行它时,我得到了:

Invoke-Command : Parameter set cannot be resolved using the specified named parameters.
At line:1 char:1
+ invoke-command -FilePath 'C:\temp\TestParams2.ps1' -ArgumentList 'mys ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Invoke-Command],ParameterBindingException
    + FullyQualifiedErrorId : AmbiguousParameterSet,microsoft.PowerShell.Commands.InvokeCommandCommand

我应该如何调用脚本?

kukududushen 回答:在将参数传递到PS文件时,如何使用invoke-command从Windows命令行运行PS文件?

zdan's answer包含关键指针: -FilePath参数仅用于远程处理 的上下文,因此您不能使用除非您还指定了-ComputerName参数。

但是,仅使用-ComputerName来定位 local 机器是(a)低效的,(b)更重要的是要求以管理员身份运行 (升高)。

您根本不需要Invoke-Command;相反,请使用-File CLI参数调用脚本,并照常传递参数,并用空格分隔:

powershell.exe -File C:\temp\TestParams2.ps1 myserver "\\server1\folder name\file.txt" 9999

如果您还需要绕过有效的execution policy

注意事项:如果有效执行策略是由 Group Policy 控制的,则它不能被覆盖。

powershell.exe -ExecutionPolicy Bypass -File C:\temp\TestParams2.ps1 myserver "\\server1\folder name\file.txt" 9999

请注意,-ExecutionPolicy Bypass必须放在-File参数之前 (类似于-Command参数的使用)--File之后的任何内容被认为是目标脚本路径以及传递给它的所有参数。

,

该错误抱怨您提供给invoke-command的参数集不完整,因此无法解析要应用到invoke-command的哪个参数。

在这种情况下,当您指定-FilePath参数时,还必须提供-ComputerName

powershell.exe invoke-command -FilePath 'C:\temp\TestParams2.ps1' -ArgumentList 'myserver','\\server1\folder name\file.txt','9999' -ComputerName localhost
本文链接:https://www.f2er.com/3156217.html

大家都在问