簡體   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