如何在所有Azure Cloud Service实例中使用Powershell替换单个文件

时间:2015-09-22 19:56:09

标签: powershell azure azure-cloud-services

我正在寻找一种快速修补/替换Azure Cloud Service生产实例中文件的方法。部署到Azure的速度比以往任何时候都快,但我们的CI / Build流程仍需要大约12分钟。我们最近进行了一次防火练习,导致我们手动RDP到每个实例中手动更新文本文件。

我已经搜索过,似乎只是发现人们希望在部署时更改* .configs,在构建时更好地执行此操作,甚至在OnStart作业中执行此操作。我想在文件已经投入使用后修改文件。

理想情况下,有一些类似于运行的script.ps1,并且有一个源文件和deploymentPath传入其中,只是有效。

像......那样的东西。

script.ps1 -SourceFile file.txt -DeploymentPath "E:\approot\config\file.txt"

感谢您提出任何想法,指示,链接和帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用WinRM。

请注意,您必须在云服务实例上打开端口5985才能访问WinRM侦听器。这可以在ServiceDefinition.csdef.template中完成,例如:

<InputEndpoint name="WinRM" protocol="tcp" port="5985" />

还要确保启动WinRM侦听器(如果使用5985,则通过HTTP,HTTPS使用5986)。

如果要发送修补小文件,则可以将其作为参数直接发送到远程powershell命令(您的会话连接到要修补的实例):

$f ="filename"
$c = Get-Content $f
invoke-command -session $s -script {param($filename,$contents) `
     set-content -path $filename -value $contents} -argumentlist $f,$c

如果您要发送更大的文件,那么您可能希望将其分块。请参阅此示例:http://poshcode.org/2216