2013-06-25 31 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