首页 文章

无法从Cmd.exe中运行PowerShell脚本,其中包含“&”以调用另一个PowerShell脚本

提问于
浏览
0

我有一个名为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命令行中无法执行此操作 . 有谁知道如何解决这个问题?谢谢 .

我运行时遇到的错误:

术语“调用并行”不被识别为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

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

    示例用于启动脚本的批处理文件:
    @echo off powershell -command "start-process cmd -argumentlist /C,powershell,'-ExecutionPolicy RemoteSigned',%~dp0\<your script name>.ps1 -verb RunAs -WindowStyle Hidden"
    这是如何工作的以及它的作用:echo off只是因为你在下一次启动时没有看到命令提示符代码启动一个启动PowerShell的Windows命令提示符会话(/ C只是指示cmd完成后终止和退出 Session )
    设置excutionpolicy是为了防止这是在没有完成remotesigned的机器上,并且因为它仅用于此实例,它将在之后恢复为默认值
    -verb RunAs以管理员模式运行
    windowstyle隐藏是为了让整个事情在后台发生,如果不想要这个就删除它
    %~dp0是cmd的代码,用于为路径使用自己的位置,因此如果使用此命令,请确保批处理文件始终与脚本位于同一文件夹中

    我应该添加一个批处理文件创建一个txt文件写入代码并保存为和更改扩展为bat而不是txt然后使用任务计划程序启动批处理文件来完成你的目标

相关问题