无法从具有“&”的Cmd.exe运行PowerShell脚本在其中调用另一个powershell脚本

时间:2016-03-24 08:22:47

标签: windows powershell parallel-processing

我有一个名为test.ps1的powershell脚本文件,其编写如下:

ps1文件中的

,内容为:

& 'C:\Invoke-Parallel.ps1'

$Sciptblock = {.....}

Invoke-Parallel -scriptblock $Scriptblock -inputobject $(get-content "C:\info.txt") -runspaceTimeout 300 -throttle 30 -NoCloseonTimeOut -quiet

我在Windows命令提示符下运行此问题,因为'&'我没有为我创建的新脚本调用我正在使用的脚本(Invoke-Parallel.ps1)。

当脚本在Powershell窗口内运行,甚至在Powershell ISE中运行时,我可以使用它,但不能在命令行中运行。

请让我知道我需要使用哪个命令行来成功运行它,或者在Windows命令行中无法执行此操作。有谁知道如何解决这个问题?感谢。

我跑步时遇到的错误:

  

“Invoke-Parallel”一词未被识别为cmdlet的名称,   功能,脚本文件或可操作程序。检查拼写   名称,或者如果包含路径,请验证路径是否正确   再试一次。在C:\ test.ps1:9 char:16 + Invoke-Parallel<<<<   -scriptblock $ Scriptblock -inputobject $(get-content“C:\ info.txt”) - runspaceTimeout 300 -throttle 30 -NoCloseonTimeOut -quiet       + CategoryInfo:ObjectNotFound :( Invoke-Parallel:String)[],Com mandNotFoundException       + FullyQualifiedErrorId:CommandNotFoundException

1 个答案:

答案 0 :(得分:0)

根据上面的评论,我认为您希望制作一个批处理文件 然后通过任务调度程序调用该命令,然后启动PowerShell脚本

示例批处理文件以启动脚本:
@echo off powershell -command "start-process cmd -argumentlist /C,powershell,'-ExecutionPolicy RemoteSigned',%~dp0\<your script name>.ps1 -verb RunAs -WindowStyle Hidden"
运作方式及其作用: 回声关闭只是这样,以便在启动时看不到命令​​提示符代码 接下来启动Windows命令提示符会话,该会话将启动PowerShell(/ C仅向cmd指示完成后终止和退出其会话)
设置了excutionpolicy,以防它在尚未进行remotesigned的计算机上,因为仅针对此实例,它会在
之后恢复为默认值 -verb RunAs在管理员模式下运行
windowstyle隐藏为使整个事情都在后台发生,如果不希望这样做则将其删除
%〜dp0是cmd的代码,用于在路径中使用其自己的位置,因此,如果使用此代码,请确保批处理文件始终与脚本位于同一文件夹中

我应该添加一个批处理文件以创建一个txt文件,并在代码中写入并另存为,然后将扩展名更改为bat而不是txt,然后使用Task Scheduler启动该批处理文件以实现您的目标