当脚本具有开关时,如何从命令提示符运行PowerShell Invoke命令?
我需要使用命令提示符运行PowerShell脚本(使用当脚本具有开关时,如何从命令提示符运行PowerShell Invoke命令?,powershell,parameter-passing,powershell-remoting,invoke-command,Powershell,Parameter Passing,Powershell Remoting,Invoke Command,我需要使用命令提示符运行PowerShell脚本(使用-c参数调用PowerShell.exe)。我已经运行了多年,但从未尝试过使用Invoke命令来执行远程处理,当我想要执行的脚本有一个开关时,我必须通过它 这段代码在PowerShell中运行得非常好,PowerShell是一个带有LogRun开关的简单脚本: icm -cn MYCOMPUTER02 {C:\Temp\Write-to-File.ps1 -LogRun $Using:LogRun} 但是,当我使用powershell.ex
-c
参数调用PowerShell.exe
)。我已经运行了多年,但从未尝试过使用Invoke命令来执行远程处理,当我想要执行的脚本有一个开关时,我必须通过它
这段代码在PowerShell中运行得非常好,PowerShell是一个带有LogRun开关的简单脚本:
icm -cn MYCOMPUTER02 {C:\Temp\Write-to-File.ps1 -LogRun $Using:LogRun}
但是,当我使用powershell.exe
通过命令提示符运行它时,失败:
powershell -c "icm -cn MYCOMPUTER02 {C:\Temp\Write-to-File.ps1 -LogRun $Using:LogRun}"
我已经尝试了很多不同的版本,但都不管用,我肯定我遗漏了一些语法细节或引用
如果你能帮我解决这个问题,请告诉我
这是我得到的错误:
icm : The value of the using variable '$using:LogRun' cannot be retrieved
because it has not been set in the local session.
At line:1 char:1
+ icm -cn MYCOMPUTER02{D:\PatV2DU\PatV2DUService20180411120032\Sc ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Invoke-Command], RuntimeException
+ FullyQualifiedErrorId : UsingVariableIsUndefined,Microsoft.PowerShell.Commands.InvokeCommandCommand
icm:无法检索using变量“$using:LogRun”的值
因为它没有在本地会话中设置。
第1行字符:1
+icm-cn MYCOMPUTER02{D:\PatV2DU\PatV2DUService20180411120032\Sc。。。
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+CategoryInfo:InvalidOperation:(:)[Invoke Command],RuntimeException
+FullyQualifiedErrorId:UsingVariableIsUndefined,Microsoft.PowerShell.Commands.InvokeCommandCommand
在PS内部运行时,$Using:LogRun
有意义。从命令行看,它没有意义。那么您该怎么做呢?首先,$LogRun
是什么?$LogRun是一个开关。例如,您有以下脚本:param([switch]$LogRun)if($LogRun){DoWork}我演示了当您直接从PowerShell使用invoke命令时它是如何工作的,但是当我尝试通过命令提示符运行它时,我找不到传递命令的正确方法,因此它无法正确地传递开关。