云服务程序在启动的时候执行Powershell脚本

如果在云服务程序启动时候,需要执行Powershell脚本,我们需要将脚本嵌入到程序中,并且编写一个cmd来执行这个脚本,具体如下:

1.编写测试的Powershell脚本:每隔10分钟 检测dns

$TimeStart = Get-Date
$TimeEnd = $timeStart.addminutes(1440)
$name = "cnppmedia.blob.core.chinacloudapi.cn."
$result = "d:\nslookuplog.txt"
Write-Host "Start Time: $TimeStart"
write-host "End Time: $TimeEnd"

Do {
 $TimeNow = Get-Date
  if ($TimeNow -ge $TimeEnd)
  {  Write-host "It‘s time to finish." }
  else
  {
    try
    {
        Write-host "===========NslookUp====Current Time : $(Get-Date)=============="
     invoke-command -scriptblock{ Write-Output "===========Test At Azure ====Current Time : $(Get-Date)=============="  | out-file -FilePath $result -Append -Force  }
     invoke-command -scriptblock{ nslookup $name | out-file -FilePath $result -Append -Force }
    }
    Catch
    {
    }

  } 

  Start-Sleep -Seconds 600
  }
  Until ($TimeNow -ge $TimeEnd) 

2.编写一个cmd文件来执行这个脚本:

echo Configuring powershell permissions
powershell -c "set-executionpolicy unrestricted"

echo start test dns
PowerShell .\testdns.ps1

if %ERRORLEVEL% neq 0 goto error

echo SUCCESS
exit /b 0

3.将这2个文件嵌入到程序中,并且都设置"Copy always"属性:

4.修改csdef文件,添加启动任务Startup

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="testdnswithsdk26" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2015-04.2.6">
  <WebRole name="WebRole1" vmsize="Small">
    <Startup>
      <Task commandLine="testdns.cmd" executionContext="elevated" taskType="background"/>
    </Startup>
    <Sites>
      <Site name="Web">
        <Bindings>
          <Binding name="Endpoint1" endpointName="Endpoint1" />
        </Bindings>
      </Site>
    </Sites>
    <ConfigurationSettings>
      <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" />
    </ConfigurationSettings>
    <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="http" port="80" />
    </Endpoints>
  </WebRole>
</ServiceDefinition>

因为测试的powershell脚本要连续执行一段时间,所以需要将任务类型设置为background,否则无法完成部署

时间: 2024-08-06 20:08:09

云服务程序在启动的时候执行Powershell脚本的相关文章

WindowsAzure Powershell脚本定时启动关机Azure VM

说到windowsazure对于当下不是一个新鲜话题了,但是对于功能来说还是有点期待的,毕竟在云服务的世界里windowsazure还是一个菜鸟了.同样我们都知道,对于windowsazure上的服务操作我们有很多方式可以操作,比如:portal页面,powershell with azure及azure pack等,其他的都是图形界面操作,操作相对简单,今天咱们就说说通过windows azure powershell命令来管理windows azure上的部分服务,powershell操作命

PowerShell 脚本执行策略

为防止恶意脚本的执行,PowerShell 中设计了一个叫做执行策略(Execution Policy)的东西(我更倾向于把它叫做脚本执行策略).我们可以在不同的应用场景中设置不同的策略来防止恶意脚本的执行.本文主要是解释这些执行策略,因为笔者在学习的时候发现它们并不是那么清晰易懂.PowerShell 提供了 Restricted.AllSigned.RemoteSigned.Unrestricted.Bypass.Undefined 六种类型的执行策略,接下来我们一一介绍. Restrict

如何让powershell脚本可以在计划任务中自动执行

今天在测试PS脚本的时候,,突然想到,让脚本每天定时自动执行,因为以前有做过Bat的经验,就想,这个还不简单,直接在windows的计划任务中创建任务不就可以了吗?于是就动手测试了,结果发现悲剧了,PS1后缀的脚本无法直接在计划任务中执行好吧,只能找度娘出马了,于是找了这种方法,自己记录一下1:我这边在我的电脑上写了一个简单的获取服务的脚本,之后保存为services.ps1这样的名称        get-service  | where{$_.status -eq "running"

数据库管理——Powershell——使用Powershell脚本找出消耗最多磁盘空间的文件

原文:数据库管理--Powershell--使用Powershell脚本找出消耗最多磁盘空间的文件 原文译自: http://www.mssqltips.com/sqlservertip/2774/powershell-script-to-find-files-that-are-consuming-the-most-disk-space/?utm_source=dailynewsletter&utm_medium=email&utm_content=headline&utm_cam

&lt;译&gt;通过PowerShell工具跨多台服务器执行SQL脚本

有时候,当我们并没有合适的第三方工具(大部分需要付费)去管理多台数据库服务器,那么如何做最省力.省心呢?!Powershell一个强大的工具,可以很方便帮到我们处理日常的数据库维护工作 .简单的几步搞定,下面介绍一个简单例子便于大家理解: 1,创建一个文件夹,如 D:\ExecScriptOnMultiServer 2,创建一个文本文件ServerList.txt,将所有需要管理的数据库实例名写到里面,格式如下:     SQLInstanceName1     SQLInstanceName2

Openstack liberty源码分析 之 云主机的启动过程3

接上篇Openstack liberty源码分析 之 云主机的启动过程2, 简单回顾下:nova-conductor收到nova-scheduler返回的主机列表后,依次发送异步rpc请求给目标主机的nova-compute服务,下面继续来看nova-compute服务的处理过程: nova-compute 根据路由映射,nova-compute中处理云主机启动请求的方法为 nova/compute/manager.py.ComputeManager.py.build_and_run_insta

Openstack liberty源码分析 之 云主机的启动过程2

接上一篇: Openstack liberty源码分析 之 云主机的启动过程1 nova-conductor nova-api通过rpc发送启动云主机请求后,nova-conductor会收到该请求,根据路由映射,该请求会递交给 nova/conductor/manager.py.ComputeTaskManager.build_instances处理,如下(函数说明见注释): def build_instances(self, context, instances, image, filter

redhat的启动方式和执行次序

rc.d的内容如下: init.d/ :各种服务器和程序的二进制文件存放目录. rcx.d/: 各个启动级别的执行程序连接目录.里头的东西都是指向init.d/的一些软连接.具体的后边叙述. 还有三个脚本:rc.sysinit, rc, rc.local 加载内核 执行init程序 /etc/rc.d/rc.sysinit # 由init执行的第一个脚本 /etc/rc.d/rc $RUNLEVEL # $RUNLEVEL为缺省的运行模式 /etc/rc.d/rc.local /sbin/min

Docker源码分析之——Docker Client的启动与命令执行

在上文Docker源码分析之--Docker Daemon的启动 中,介绍了Docker Daemon进程的启动.Docker Daemon可以认为是一个Docker作为Server的运行载体,而真正发送关于docker container操作的请求的载体,在于Docker Client.本文从Docker源码的角度,分析Docker Client启动与执行请求的过程. Docker Client启动的流程与Docker Daemon启动的过程相仿.首先执行reexec.Init():随后解析f