All Products
Search
Document Center

CloudOps Orchestration Service:ACS-ECS-RepairWindowsBlueScreenIssue

Last Updated:Dec 24, 2025

Template name

ACS-ECS-RepairWindowsBlueScreenIssue

Execute Now

Template description

Fixes the Windows blue screen issue.

Template type

Automated

Owner

Alibaba Cloud

Input parameters

Parameter

Description

Type

Required

Default value

Limit

instanceId

Instance ID

String

Yes

password

Instance password

String

Yes

regionId

The region ID.

String

No

{{ ACS::RegionId }}

Output parameters

None

Permission policy that is required to execute the template

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "ecs:AttachDisk",
                "ecs:AuthorizeSecurityGroup",
                "ecs:AuthorizeSecurityGroupEgress",
                "ecs:ConfigureSecurityGroupPermissions",
                "ecs:CreateSecurityGroup",
                "ecs:DeleteInstance",
                "ecs:DeleteSecurityGroup",
                "ecs:DescribeDisks",
                "ecs:DescribeInstances",
                "ecs:DescribeInvocationResults",
                "ecs:DescribeInvocations",
                "ecs:DescribeNetworkInterfaces",
                "ecs:DescribeSecurityGroupAttribute",
                "ecs:DescribeSecurityGroups",
                "ecs:DetachDisk",
                "ecs:JoinResourceGroup",
                "ecs:ModifySecurityGroupEgressRule",
                "ecs:ModifySecurityGroupRule",
                "ecs:RunCommand",
                "ecs:RunInstances",
                "ecs:StartInstance",
                "ecs:StopInstance",
                "ecs:TagResources",
                "ecs:UntagResources"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "ros:CreateStack",
                "ros:DeleteStack",
                "ros:GetStack"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "quotas:ListProductQuotas"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "rds:DescribeDBInstances"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "slb:DescribeLoadBalancers"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "vpc:AssociateVpcCidrBlock",
                "vpc:CreateVSwitch",
                "vpc:CreateVpc",
                "vpc:DeleteVSwitch",
                "vpc:DeleteVpc",
                "vpc:DescribeVSwitches",
                "vpc:DescribeVpcs",
                "vpc:DescribeVpnGateways",
                "vpc:DescribeZones",
                "vpc:ModifyVSwitchAttribute",
                "vpc:ModifyVpcAttribute",
                "vpc:TagResources",
                "vpc:UnTagResources"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}

Details

ACS-ECS-RepairWindowsBlueScreenIssue - details

Template content

FormatVersion: OOS-2019-06-01
Description:
  en: Solutions to Repair Windows System Blue Screen Issues
  zh-cn: Solutions to Repair Windows System Blue Screen Issues
  name-en: ACS-ECS-RepairWindowsBlueScreenIssue
  name-zh-cn: RepairWindowsBlueScreenIssue
Parameters:
  regionId:
    Type: String
    Label:
      en: RegionId
      zh-cn: Region ID
    AssociationProperty: RegionId
    Default: '{{ ACS::RegionId }}'
  instanceId:
    Type: String
    AssociationProperty: ALIYUN::ECS::Instance::InstanceId
    AssociationPropertyMetadata:
      RegionId: regionId
    Label:
      en: InstanceId
      zh-cn: Instance ID
  password:
    Type: String
    AssociationProperty: ALIYUN::ECS::Instance::Password
    Label:
      en: ECS Instance Password
      zh-cn: ECS Instance Password
    NoEcho: true
RamRole: ''
Tasks:
  - Name: getZoneId
    Action: ACS::ExecuteApi
    Description:
      en: Get zoneId of ECS instance
      zh-cn: Get the zone of the ECS instance
    Properties:
      Service: ecs
      API: DescribeInstances
      Parameters:
        RegionId: '{{ regionId }}'
        InstanceIds:
          - '{{ instanceId }}'
    Outputs:
      zoneId:
        Type: String
        ValueSelector: .Instances.Instance[].ZoneId
      instanceType:
        Type: String
        ValueSelector: .Instances.Instance[].InstanceType
  - Name: createStack
    Action: ACS::ExecuteAPI
    Description:
      en: Create a VPC resource stack
      zh-cn: Create a VPC resource stack
    Properties:
      Service: ROS
      API: CreateStack
      Parameters:
        RegionId: '{{ regionId  }}'
        StackName: OOS-{{ACS::ExecutionId}}
        TimeoutInMinutes: 10
        DisableRollback: false
        Parameters:
          - ParameterKey: ZoneId
            ParameterValue: '{{ getZoneId.zoneId }}'
          - ParameterKey: VpcCidrBlock
            ParameterValue: 192.168.0.0/16
          - ParameterKey: VSwitchCidrBlock
            ParameterValue: 192.168.1.0/24
        TemplateBody: |
          ROSTemplateFormatVersion: '2015-09-01'
          Parameters:
            ZoneId:
              Type: String
            VpcCidrBlock:
              Type: String
            VSwitchCidrBlock:
              Type: String
          Resources:
            EcsVpc:
              Type: ALIYUN::ECS::VPC
              Properties:
                CidrBlock:
                  Ref: VpcCidrBlock
                VpcName:
                  Ref: ALIYUN::StackName
            EcsVSwitch:
              Type: ALIYUN::ECS::VSwitch
              Properties:
                ZoneId:
                  Ref: ZoneId
                VpcId:
                  Ref: EcsVpc
                CidrBlock:
                  Ref: VSwitchCidrBlock
            EcsSecurityGroup:
              Type: ALIYUN::ECS::SecurityGroup
              Properties:
                VpcId:
                  Ref: EcsVpc
          Outputs:
            SecurityGroupId:
              Value:
                Ref: EcsSecurityGroup
            VSwitchId:
              Value:
                Ref: EcsVSwitch
    Outputs:
      StackId:
        Type: String
        ValueSelector: StackId
  - Name: untilStackReady
    Action: ACS::WaitFor
    Description:
      en: Wait for the stack status CREATE_COMPLETE
      zh-cn: Wait for the stack to reach the CREATE_COMPLETE state
    OnError: deleteStack
    Retries: 10
    DelayType: Exponential
    Delay: 2
    BackOff: 2
    Properties:
      Service: ROS
      API: GetStack
      Parameters:
        RegionId: '{{ regionId  }}'
        StackId: '{{createStack.StackId}}'
      DesiredValues:
        - CREATE_COMPLETE
      StopRetryValues:
        - CREATE_FAILED
        - CHECK_FAILED
        - ROLLBACK_FAILED
        - ROLLBACK_COMPLETE
        - CREATE_ROLLBACK_COMPLETE
      PropertySelector: Status
      NotDesiredValues: []
    Outputs:
      securityGroupId:
        Type: String
        ValueSelector: Outputs[0].OutputValue
      vSwitchId:
        Type: String
        ValueSelector: Outputs[1].OutputValue
  - Name: runInstances
    Action: ACS::ECS::RunInstances
    Description:
      en: Create a temporary ECS instance
      zh-cn: Create a temporary ECS instance
    OnError: deleteStack
    Properties:
      regionId: '{{ regionId }}'
      imageId: wincore_2022_x64_dtc_en-us_40G_alibase_20240617.vhd
      instanceType: '{{ getZoneId.instanceType }}'
      securityGroupId: '{{ untilStackReady.securityGroupId }}'
      vSwitchId: '{{ untilStackReady.vSwitchId }}'
      systemDiskCategory: cloud_essd
      systemDiskSize: '40'
      internetMaxBandwidthIn: 0
      internetMaxBandwidthOut: 0
      amount: 1
    Outputs:
      instanceId:
        Type: String
        ValueSelector: instanceIds[0]
  - Name: StopInstance
    Action: ACS::ECS::StopInstance
    Description:
      en: Stop ECS instance pending repair.
      zh-cn: Stop the ECS instance pending repair.
    OnError: deleteInstance
    Properties:
      regionId: '{{ regionId }}'
      instanceId: '{{ instanceId }}'
      forceStop: true
  - Name: getDiskId
    Action: ACS::ExecuteApi
    Description:
      en: Get system disk ID of the ECS instance pending repair.
      zh-cn: Get the system disk ID of the ECS instance pending repair.
    Properties:
      Service: ecs
      API: DescribeDisks
      Parameters:
        RegionId: '{{ regionId }}'
        InstanceId: '{{ instanceId }}'
        DiskType: system
    Outputs:
      diskId:
        Type: String
        ValueSelector: .Disks.Disk[].DiskId
  - Name: detachSystemDisk
    Description:
      en: Detach the system disk from the ECS instance pending repair.
      zh-cn: Detach the system disk from the ECS instance pending repair.
    Action: ACS::ECS::DetachDisk
    OnError: deleteInstance
    Properties:
      regionId: '{{ regionId }}'
      instanceId: '{{ instanceId }}'
      diskId: '{{ getDiskId.diskId }}'
  - Name: attachDiskToTempInstance
    Action: ACS::ECS::AttachDisk
    Description:
      en: Attach disk to a temporary ECS instance.
      zh-cn: Attach the disk to a temporary ECS instance.
    OnError: deleteInstance
    Properties:
      regionId: '{{ regionId }}'
      instanceId: '{{ runInstances.instanceId }}'
      diskId: '{{ getDiskId.diskId }}'
  - Name: waitForAWhile
    Description:
      en: Wait for the system to become ready
      zh-cn: Wait for the system to become ready
    Action: ACS::Sleep
    Properties:
      Duration: PT4M
  - Name: runCommand
    Action: ACS::ECS::RunCommand
    Description:
      en: Run the repair command.
      zh-cn: Run the repair command.
    Properties:
      regionId: '{{ regionId }}'
      commandType: RunPowerShellScript
      instanceId: '{{ runInstances.instanceId }}'
      commandContent: |-
        $disks = Get-Disk
        $disks | ForEach-Object {
          if ($_.IsOffline) {
            Set-Disk -Number $_.Number -IsOffline $false
          }

          if ($_.IsReadOnly) {
            Set-Disk -Number $_.Number -IsReadOnly $false
          }
        }

        # Rename driver dir
        $driverDir = "D:\windows\system32\drivers\CrowdStrike"
        if (!(Test-Path $driverDir)) {
          Write-Host "driver path not found"
          exit 1
        }

        Rename-Item -Path $driverDir -NewName ($driverDir + ".bak")
  - Name: detachDisk
    Action: ACS::ECS::DetachDisk
    Description:
      en: Detach disk from the temporary instance.
      zh-cn: Detach the disk from the temporary instance.
    Properties:
      regionId: '{{ regionId }}'
      instanceId: '{{ runInstances.instanceId }}'
      diskId: '{{ getDiskId.diskId }}'
  - Name: attachDiskToOriginalInstance
    Action: ACS::ECS::AttachDisk
    Description:
      en: Attach the disk to the original instance.
      zh-cn: Attach the disk back to the original instance.
    Properties:
      regionId: '{{ regionId }}'
      instanceId: '{{ instanceId }}'
      diskId: '{{ getDiskId.diskId }}'
      bootable: true
      password: '{{ password }}'
  - Name: startInstance
    Action: ACS::ECS::StartInstance
    Description:
      en: Start the original instance.
      zh-cn: Start the original instance.
    Properties:
      regionId: '{{ regionId }}'
      instanceId: '{{ instanceId }}'
  - Name: deleteInstance
    Action: ACS::ExecuteAPI
    Description:
      en: Delete the temporary instance.
      zh-cn: Delete the temporary instance.
    Properties:
      Service: ECS
      API: DeleteInstance
      Risk: Normal
      Parameters:
        RegionId: '{{ regionId }}'
        InstanceId: '{{ runInstances.instanceId }}'
        Force: true
  - Name: deleteStack
    Action: ACS::ExecuteApi
    Description:
      en: Delete the VPC resource stack
      zh-cn: Delete the VPC resource stack
    Properties:
      Service: ROS
      API: DeleteStack
      Parameters:
        RegionId: '{{ regionId  }}'
        StackId: '{{ createStack.StackId }}'