我在尝试在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脚本都放在应用程序根目录中,标记为"内容"属性设置为" CopyLocal = Always"。
在我的服务定义中,我把它放在:
<Startup>
<Task commandLine="Startup.cmd" executionContext="elevated" taskType="background"></Task>
</Startup>
现在,当我将应用程序部署到Azure时,&#34;什么都没有&#34;发生。我将角色实例配置为允许连接到计算机的远程桌面。我验证了发布的脚本,并且没有日志文件,RC4仍然启用。我尝试手动运行.cmd,机器运行脚本完成,禁用RC4并重新启动。所以脚本实际上是正确的#34;。
问题是脚本在启动时没有被激活。我可能错了,但我没有看到任何相关的Windows事件。实际上,服务器现在保留所有配置,但我必须确保脚本执行,以防我必须发布到新实例/云服务。
我也尝试过: 1.将脚本放在子目录中 2.创建其他2&#34;更简单&#34; .cmd只是用&#34;脚本开始创建一个日志文件&#34;排除与调用PowerShell脚本的.cmd相关的问题。 这些脚本都没有被执行。
希望我已经足够清楚,我们将非常感谢任何帮助。
提前谢谢你,
阿尔贝托
通过各种讨论,我错过了一件非常重要的事情:脚本文件实际上是在两个不同的地方发布的,一个在/ bin文件夹中。
Ex:我将我的脚本放在项目的/ StartupScripts文件夹中,当我通过远程桌面连接到Azure服务器时,我发现脚本都在&#34; approot / StartupScripts&#34;并且在&#34; approot / bin / StartupScripts&#34;。
实际执行的脚本是放在&#34; bin&#34;内的脚本。夹。真正的问题是我在.cmd中可能存在路径问题,因为我现在发现执行日志有错误。
现在我将尝试更改它并在此处更新问题。
答案 0 :(得分:0)
确定。
最后,我的Startup.cmd文件中的路径确实存在问题:。如果StartUp Task指向子文件夹,则无法找到。\ HardenSSL.ps1。
解决方法是将Startup.cmd和HardenSSL.ps1文件放在应用程序根目录中,在调用PowerShell脚本时删除“。\”部分并且一切运行良好。
无论如何,我想建议任何人选择我在堆栈交换中找到的其他解决方案: https://security.stackexchange.com/a/79957
它链接到一个NuGet包,它与原始帖子中github链接上找到的脚本完全相同,只是“更好”;主要是:
阿尔贝托。