0

我的目标是创建我的 Powershell 脚本来自动安装 IIS 和我们需要的所有功能,甚至找到一个批处理文件来启用 powershell 脚本的执行,而不必继续“模块 - > SetExecutionPolicy ...”因此,更容易管理。

我想做的是创建一个 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    

各位大佬能指出错误并帮我改正吗?

EDIT1:我没有收到错误消息,我只是得到一个空的 cmd 窗口。

EDIT2:用 Jubjub Bandersnatch 的简单回答解决了这个问题,谢谢!对不起,糟糕的代码和简单的错误数量(如选项 1 和 2 等),我会学习更多,以便提出更好的问题。多谢你们。:))

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

这个应该可以的。

4

1 回答 1

1

如果脚本可以检测到您想知道的内容,是否有理由向用户询问任何内容?

如果您只想将 PoSH 执行策略设置为始终绕过或其他什么,为什么不这样做呢?然后,调用 IISInstallation.ps1。

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

更好的是,您可以不在乎策略是什么而仍然运行脚本。

PowerShell -ExecutionPolicy Bypass -File c:\ScriptsIIS\IISInstallation.ps1
于 2013-06-25T21:04:33.293 回答