将 PowerShell 变量传递给命令行参数时遇到问题

将 PowerShell 变量传递给命令行参数时遇到问题

我正在编写一个脚本,该脚本采用 powershell 变量并在运行 net 命令的脚本块中使用它。

以下是代码:

$User = "domain\user"
Invoke-Command -ComputerName $ComputerName -ScriptBlock { net localgroup administrators $User /add } -Credential $cred

当我运行它时,我收到以下错误消息:

The group already exists.
+ CategoryInfo          : NotSpecified: (The group already exists.:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
+ PSComputerName        : GMCR77569

More help is available by typing NET HELPMSG 2223.

因此,net 命令似乎正在尝试创建管理员组。我在 Google 上没有找到太多相关信息。

另外,我正在使用 Invoke-Command,因为我需要能够传递凭据。

我确信这很简单,但我搞不懂。提前谢谢您!

答案1

因为您正在调用远程命令,所以脚本部分正在尝试解析远程会话中的 $User 变量。如果您想传递变量,那么您可以使用 -Args 参数修改 Invoke-Command。我认为类似下面的方法应该可行:

Invoke-Command -ComputerName $ComputerName -ScriptBlock { net localgroup administrators $args[0] /add } -Credential $cred -Args $User

这篇 PowerShell 博客文章很好地解释了一些问题,并提供了一些解决问题的其他方法。

https://blogs.msdn.microsoft.com/powershell/2009/12/29/how-to-pass-arguments-for-remote-commands/

相关内容