感谢您花时间阅读本文。
我的问题如下:我试图创建一个使用PowerShell执行以下操作的程序:
获取powershell外部生成的表格
使用表
powershell脚本调用特殊类型的.cmd文件,然后在其上运行位于不同共享位置的命令。
现在问题在于第3点。
我目前正在使用以下内容来调用我的脚本(并且争论只是硬编码以使其正常工作,它们将在稍后的步骤2中生成):
powershell.exe -ExecutionPolicy Bypass -Command {invoke-command -file \\sharedlocation\test5.ps1 -computername server1121 -argumentlist 7058,Jason}
test5.ps1的内部目前是:
param(
[Parameter(Mandatory=$true)]
[string] $Var1,
[Parameter(Mandatory=$true)]
[string] $Var2
)
$CommandsPath = "\\sharedlocation\testcommands.cmd"
$path = "C:\"+$Var1+"\TOOLS\"+$Var2+"launchtool.cmd"
$scriptPath = [scriptblock]::Create($path)
$out | invoke-command {PARAM($MyArg) $scriptPath } -ArgumentList $CommandsPath
我也尝试过使用
$CommandsPath = "\\sharedlocation\testcommands.cmd"
$path = "C:\"+$Var1+"\TOOLS\"+$Var2+"\launchtool.cmd & " + $CommandsPath
$scriptPath = [scriptblock]::Create($path)
$out | invoke-command {$scriptPath }
我还尝试使用硬编码的testcommands调用,而不是将它们放在文件中。
现在我的问题是两种情况,它都运行launchtool.cmd,但它没有通过testcommands.cmd文件。
然而,当我在机器上运行时
C:\7058\TOOLS\Jason\launchtool.cmd & \\sharedlocation\testcommands.cmd
工作正常。
任何想法我做错了什么?
答案 0 :(得分:0)
尝试,调用表达式“cmd.exe / c C:\ 7058 \ TOOLS \ Jason \ launchtool.cmd& \ sharedlocation \ testcommands.cmd”
cmd.exe / c是确保cmd和powershell之间一致性的最佳方法
答案 1 :(得分:0)
是否可以从powershell访问UNC路径?将testcommands.cmd复制到本地路径并尝试它是否有效!
$CommandsPath = "\\sharedlocation\testcommands.cmd"
if(Test-Path $CommandsPath)
{
$path = "C:\"+$Var1+"\TOOLS\"+$Var2+"\launchtool.cmd & " + $CommandsPath
$scriptPath = [scriptblock]::Create($path)
$out | invoke-command {$scriptPath }
}