![](/img/trans.png)
[英]How to run internal Powershell script function from cmd.exe with arguments
[英]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.