2013-06-25 75 views
0

我的目標是創建我的Powershell腳本,以自動安裝IIS和我們需要的所有功能,甚至找到一個批處理文件來啓用PowerShell腳本的執行,而無需繼續進行「模塊 - > SetExecutionPolicy ...」,使其更容易管理。嘗試自動執行安裝IIS 7.0的兩個腳本

我想要做的是創建一個BATCH文件,詢問「您的機器上是否啓用腳本執行?」我們有3個不同的答案,如下所示:「是的,我已啓用執行」,「不,我沒有啓用執行」和「我不知道」。根據答案,批處理執行所需的文件來安裝IIS。如果答案是數字1,只執行.ps1文件,如果答案是數字2或3,請首先執行.bat以啓用,然後執行.ps1文件。

因此,經過大量的研究,並試圖創建一個腳本,我不能拿出一個工程。正如你所看到的,那裏有很多錯誤,但我沒有足夠的腳本知識來完成這個。有人能幫我嗎?

@ECHO OFF 

:BEGIN 
CLS 
CHOICE /N /C:123 /M "In your system: 1 - Scripts are enabled. 2 - Scripts are disabled. 3 - I dont know (1, 2, or 3)"%1 

IF ERRORLEVEL ==3 GOTO THREE 
IF ERRORLEVEL ==2 GOTO TWO 
IF ERRORLEVEL ==1 GOTO ONE 

:THREE 
CALL c:\ScriptsIIS\IISInstallation.ps1 
CALL c:\ScriptsIIS\IISInstallation.ps1 
ECHO Installation finished. 

:TWO 
CALL c:\ScriptsIIS\IISInstallation.ps1 
CALL c:\ScriptsIIS\ScriptEnableExecution.bat 
ECHO Installation finished. 

:ONE 
CALL c:\ScriptsIIS\ScriptEnableExecution.bat 
ECHO Installation finished. 


PAUSE  

你們可以請指出錯誤並幫我糾正它嗎?

編輯1:我沒有收到錯誤消息,我只是得到一個空的cmd窗口。

編輯2:解決了這個問題,從Jubjub Bandersnatch的簡單答案,謝謝!對於可怕的代碼和簡單的錯誤數量(如選項1和2等),我會學習更多,所以我可以提出更多的問題。多謝你們。 :))

cls 
Powershell -noexit -command "& {Set-ExecutionPolicy remotesigned -Force}" 
Powershell -File c:\ScriptsIIS\IISInstallation.ps1 

這一個應該工作。

+0

結果我現在正在按下「1」,「2」或「3」後,只是一個空的cmd窗口。 我放置了goto:eof,並且在按下其中一個選項後仍然會看到一個空的cmd窗口。 – InLoveWithPs1

+2

您無法從批處理中調用ps1文件。您必須使用powershell.exe -file script.ps1例如 –

+0

哦,謝謝,讓我試試它,然後編輯問題中的代碼。 (也是我注意到的「:THREE」標籤上的一個錯誤) – InLoveWithPs1

回答

1

是否有理由向用戶詢問任何你想知道的內容是否被腳本檢測到?

如果您只希望將PoSH執行策略設置爲繞過或者所有時間,爲什麼不這樣做?然後,調用IISInstallation.ps1。

PowerShell -Command "Set-ExecutionPolicy Bypass" 
PowerShell -File c:\ScriptsIIS\IISInstallation.ps1 

更好的是,您可以不在乎策略是什麼,仍然可以運行腳本。

PowerShell -ExecutionPolicy Bypass -File c:\ScriptsIIS\IISInstallation.ps1 
+1

請注意,執行策略通過組策略鎖定時,'-ExecutionPolicy Bypass'將失敗。 –

+0

這只是執行1個腳本(批量處理,如果執行策略被禁用,防止錯誤),如果答案是禁用執行策略,誰會執行這兩個腳本。但是你是對的,這樣就容易多了。謝謝 ! :))(不能upvote你,對不起) – InLoveWithPs1

+0

所以我可以只是把「Set-ExecutionPolicy RemoteSigned」,而不是繞過? – InLoveWithPs1