{
    "properties": {
        "displayName": "Deploy the Windows Guest Configuration extension to enable Guest Configuration assignments on Windows VMs",
        "policyType": "BuiltIn",
        "mode": "Indexed",
        "description": "This policy deploys the Windows Guest Configuration extension to Windows virtual machines hosted in Azure that are supported by Guest Configuration. The Windows Guest Configuration extension is a prerequisite for all Windows Guest Configuration assignments and must be deployed to machines before using any Windows Guest Configuration policy definition. For more information on Guest Configuration, visit https://aka.ms/gcpol.",
        "metadata": {
            "category": "Guest Configuration",
            "version": "1.0.1"
        },
        "policyRule": {
            "if": {
                "allOf": [
                    {
                        "field": "type",
                        "equals": "Microsoft.Compute/virtualMachines"
                    },
                    {
                        "anyOf": [
                            {
                                "field": "Microsoft.Compute/imagePublisher",
                                "in": [
                                    "esri",
                                    "incredibuild",
                                    "MicrosoftDynamicsAX",
                                    "MicrosoftSharepoint",
                                    "MicrosoftVisualStudio",
                                    "MicrosoftWindowsDesktop",
                                    "MicrosoftWindowsServerHPCPack"
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "field": "Microsoft.Compute/imagePublisher",
                                        "equals": "MicrosoftWindowsServer"
                                    },
                                    {
                                        "field": "Microsoft.Compute/imageSKU",
                                        "notLike": "2008*"
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "field": "Microsoft.Compute/imagePublisher",
                                        "equals": "MicrosoftSQLServer"
                                    },
                                    {
                                        "field": "Microsoft.Compute/imageOffer",
                                        "notLike": "SQL2008*"
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "field": "Microsoft.Compute/imagePublisher",
                                        "equals": "microsoft-dsvm"
                                    },
                                    {
                                        "field": "Microsoft.Compute/imageOffer",
                                        "equals": "dsvm-windows"
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "field": "Microsoft.Compute/imagePublisher",
                                        "equals": "microsoft-ads"
                                    },
                                    {
                                        "field": "Microsoft.Compute/imageOffer",
                                        "in": [
                                            "standard-data-science-vm",
                                            "windows-data-science-vm"
                                        ]
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "field": "Microsoft.Compute/imagePublisher",
                                        "equals": "batch"
                                    },
                                    {
                                        "field": "Microsoft.Compute/imageOffer",
                                        "equals": "rendering-windows2016"
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "field": "Microsoft.Compute/imagePublisher",
                                        "equals": "center-for-internet-security-inc"
                                    },
                                    {
                                        "field": "Microsoft.Compute/imageOffer",
                                        "like": "cis-windows-server-201*"
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "field": "Microsoft.Compute/imagePublisher",
                                        "equals": "pivotal"
                                    },
                                    {
                                        "field": "Microsoft.Compute/imageOffer",
                                        "like": "bosh-windows-server*"
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "field": "Microsoft.Compute/imagePublisher",
                                        "equals": "cloud-infrastructure-services"
                                    },
                                    {
                                        "field": "Microsoft.Compute/imageOffer",
                                        "like": "ad*"
                                    }
                                ]
                            },
                            {
                                "allOf": [
                                    {
                                        "anyOf": [
                                            {
                                                "field": "Microsoft.Compute/virtualMachines/osProfile.windowsConfiguration",
                                                "exists": "true"
                                            },
                                            {
                                                "field": "Microsoft.Compute/virtualMachines/storageProfile.osDisk.osType",
                                                "like": "Windows*"
                                            }
                                        ]
                                    },
                                    {
                                        "anyOf": [
                                            {
                                                "field": "Microsoft.Compute/imageSKU",
                                                "exists": "false"
                                            },
                                            {
                                                "allOf": [
                                                    {
                                                        "field": "Microsoft.Compute/imageSKU",
                                                        "notLike": "2008*"
                                                    },
                                                    {
                                                        "field": "Microsoft.Compute/imageOffer",
                                                        "notLike": "SQL2008*"
                                                    }
                                                ]
                                            }
                                        ]
                                    }
                                ]
                            }
                        ]
                    }
                ]
            },
            "then": {
                "effect": "deployIfNotExists",
                "details": {
                    "roleDefinitionIds": [
                        "/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
                    ],
                    "type": "Microsoft.Compute/virtualMachines/extensions",
                    "name": "AzurePolicyforWindows",
                    "existenceCondition": {
                        "allOf": [
                            {
                                "field": "Microsoft.Compute/virtualMachines/extensions/publisher",
                                "equals": "Microsoft.GuestConfiguration"
                            },
                            {
                                "field": "Microsoft.Compute/virtualMachines/extensions/type",
                                "equals": "ConfigurationforWindows"
                            },
                            {
                                "field": "Microsoft.Compute/virtualMachines/extensions/provisioningState",
                                "equals": "Succeeded"
                            }
                        ]
                    },
                    "deployment": {
                        "properties": {
                            "mode": "incremental",
                            "parameters": {
                                "vmName": {
                                    "value": "[field('name')]"
                                },
                                "location": {
                                    "value": "[field('location')]"
                                }
                            },
                            "template": {
                                "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                                "contentVersion": "1.0.0.0",
                                "parameters": {
                                    "vmName": {
                                        "type": "string"
                                    },
                                    "location": {
                                        "type": "string"
                                    }
                                },
                                "resources": [
                                    {
                                        "apiVersion": "2019-07-01",
                                        "name": "[concat(parameters('vmName'), '/AzurePolicyforWindows')]",
                                        "type": "Microsoft.Compute/virtualMachines/extensions",
                                        "location": "[parameters('location')]",
                                        "properties": {
                                            "publisher": "Microsoft.GuestConfiguration",
                                            "type": "ConfigurationforWindows",
                                            "typeHandlerVersion": "1.1",
                                            "autoUpgradeMinorVersion": true,
                                            "settings": {},
                                            "protectedSettings": {}
                                        }
                                    }
                                ]
                            }
                        }
                    }
                }
            }
        }
    },
    "id": "/providers/Microsoft.Authorization/policyDefinitions/385f5831-96d4-41db-9a3c-cd3af78aaae6",
    "name": "385f5831-96d4-41db-9a3c-cd3af78aaae6"
}