所有,
注意:我已在反馈后更新了问题。
到目前为止,感谢 @jisaak 的帮助。
我需要运行PowerShell脚本,该脚本在部署Cloud Service时添加TCP绑定(bind)和其他一些内容。
这是我的云服务项目:
这是我的云服务项目和Webrole项目:
这是我在ServiceDefinition.csdef中的任务:
这是我要运行的PowerShell脚本:
这是我对Startup.cmd的尝试:
部署时,我在Azure日志中得到了这个:
而这在powershell日志中:
任何帮助将不胜感激。
我想我快到了,但是在网络上关注其他人的语法似乎并不能使我到达那里。
谢谢
拉斯
最佳答案
我认为问题在于,批处理命令解释器在运行Startup.cmd时运行的工作目录不符合预期。
Startup.cmd位于\approot\bin\Startup
目录中,但工作目录为\approot\bin
。
因此,命令.\RoleStartup.ps1
在bin
目录而不是bin\Startup
目录中查找时无法找到RoleStartup.ps1。
我知道的解决方案是:
解决方案1 :
使用..\Startup\RoleStartup.ps1
从Startup.cmd调用RoleStartup.ps1。
Soltuion 2 :
在Startup.cmd中更改当前的工作目录,以便找到相对路径.\RoleStartup.ps1
。我通过CHDIR %~dp0
(请参阅here)执行此操作,以更改为包含Startup.cmd的目录。
解决方案3 :
正如Don Lockhart的答案所建议的,不要将Startup目录复制到输出中,而应在Visual Studio项目中将其设置为“Content”。这意味着其中的文件将存在于Azure实例的\approot\Startup
目录中。 (然后,您要确保Startup文件夹不能通过IIS公开访问!)。然后,将ServiceDefinition.csdef中对Startup.cmd的引用更新为..\Startup\Startup.cmd
,并将Startup.cmd中对RoleStartup.ps1的引用更新为..\Startup\RoleStartup.ps1
。这基于工作目录为bin
并使用..\Startup
始终相对于其定位启动目录这一事实。
关于powershell - 需要运行PowerShell脚本的Azure云服务启动任务,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32858396/