启动任务未在Azure云服务角色上运行

时间:2015-11-13 14:40:22

标签: powershell azure cmd startup

我在尝试在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相关的问题。 这些脚本都没有被执行。

希望我已经足够清楚,我们将非常感谢任何帮助。

提前谢谢你,

阿尔贝托

更新1

通过各种讨论,我错过了一件非常重要的事情:脚本文件实际上是在两个不同的地方发布的,一个在/ bin文件夹中。

Ex:我将我的脚本放在项目的/ StartupScripts文件夹中,当我通过远程桌面连接到Azure服务器时,我发现脚本都在&#34; approot / StartupScripts&#34;并且在&#34; approot / bin / StartupScripts&#34;。

实际执行的脚本是放在&#34; bin&#34;内的脚本。夹。真正的问题是我在.cmd中可能存在路径问题,因为我现在发现执行日志有错误。

现在我将尝试更改它并在此处更新问题。

1 个答案:

答案 0 :(得分:0)

确定。

最后,我的Startup.cmd文件中的路径确实存在问题:。如果StartUp Task指向子文件夹,则无法找到。\ HardenSSL.ps1。

解决方法是将Startup.cmd和HardenSSL.ps1文件放在应用程序根目录中,在调用PowerShell脚本时删除“。\”部分并且一切运行良好。

无论如何,我想建议任何人选择我在堆栈交换中找到的其他解决方案: https://security.stackexchange.com/a/79957

它链接到一个NuGet包,它与原始帖子中github链接上找到的脚本完全相同,只是“更好”;主要是:

  • 更好地配置密码套件,支持SSLLabs上所有参考浏览器的ForwardSecrecy
  • 在Windows XP上保留对Internet Explorer 8的SSL支持(遗憾的是仍然是我们的必需品)

阿尔贝托。

相关问题