繁体   English   中英

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

[英]Cannot run PowerShell Scripts from Cmd.exe that has an “&” in it to call another powershell script

我有一个名为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 +调用并行<<<< -scriptblock $ Scriptblock -inputobject $(get-content“ C:\\ info.txt”)-runspaceTimeout 300 -throttle 30 -NoCloseonTimeOut -quiet + CategoryInfo:ObjectNotFound:(Invoke-Parallel:String)[],commandNotFoundException + FullyQualifiedErrorId:CommandNotFoundException

基于以上评论,我认为您希望创建一个批处理文件,然后通过任务计划程序调用该文件,然后启动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启动该批处理文件以实现您的目标

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM