【发布时间】:2015-11-17 19:53:06
【问题描述】:
我在尝试以 Azure 角色设置启动任务时遇到了困难。 最终目标是禁用 RC4 密码以及其他 SSL 配置。在我的 (VS2012Express) 项目中(在 SO 中的另一个答案之后部分实现了解决方案,这导致我来到 https://gist.github.com/sidshetye/29d6d48dfa0c2f5488a4 )我创建了一个 Startup.cmd 文件,如下所示:
# Execute powershell command to disable RC4 and imporve SSL security settings
ECHO Batch started >> "StartupLog.txt" 2>&1
PowerShell -ExecutionPolicy Unrestricted .\HardenSSL.ps1 >> log- HardenSSL.txt 2>&1
EXIT /B 0
HardenSSL.ps1 是上一个链接中的 PowerShell 脚本。 .cmd 和 .ps1 脚本都放置在应用程序根目录中,标记为“Content”,属性设置为“CopyLocal=Always”。
在我的服务定义中,我这样写:
<Startup>
<Task commandLine="Startup.cmd" executionContext="elevated" taskType="background"></Task>
</Startup>
现在,当我将应用程序部署到 Azure 时,“什么都没有”发生。我将角色实例配置为允许远程桌面连接到机器。我验证了发布的脚本,没有日志文件,RC4 仍然启用。我尝试手动运行 .cmd,机器运行脚本完成,禁用 RC4 并重新启动。所以脚本实际上是“正确的”。
问题是脚本在启动时没有启动。我可能是错的,但我没有看到任何相关的 Windows 事件。实际上,服务器现在保留了所有配置,但我必须确保脚本得到执行,以防我不得不发布到新的实例/云服务。
我也尝试过: 1. 将脚本放在子目录中 2. 创建其他 2 个“更简单”的 .cmd,它们只是创建一个带有“脚本启动”的日志文件,以排除与调用 PowerShell 脚本的 .cmd 相关的问题。 这些脚本都没有被执行。
希望我已经足够清楚,任何帮助将不胜感激。
提前谢谢你,
阿尔伯托
更新 1
通过各种讨论,我错过了一件非常重要的事情:脚本文件实际上发布在 2 个不同的地方,一个在 /bin 文件夹中。
例如:我将脚本放在项目的 /StartupScripts 文件夹中,当我通过远程桌面连接到 Azure 服务器时,我在“approot/StartupScripts”和“approot/bin/StartupScripts”中都找到了脚本。
实际执行的脚本是放置在“bin”文件夹中的脚本。真正的问题是我在 .cmd 中可能存在路径问题,因为我现在发现执行日志有错误。
现在我将尝试对其进行更改并在此处更新问题。
【问题讨论】:
-
所有路径都正确吗?该文件是否出现在服务器上的 approot 文件夹中,您是否尝试过像这样从批处理脚本执行它:
%RoleRoot%\approot\HardenSSL.ps1 -
用我发现的内容更新了问题,似乎确实是路径的问题。即将测试它。
标签: powershell azure cmd startup