SubscriptionSecurity/SecurityCenter.ps1

Set-StrictMode -Version Latest

function Set-AzSKAzureSecurityCenterPolicies 
{
    <#
    .SYNOPSIS
    This command would help in setting up the Security Center policies for a Subscription
 
    .DESCRIPTION
    This command would help in setting up the Security Center policies for a Subscription
 
    .LINK
    https://aka.ms/azsdkossdocs
    #>


    [OutputType([String])]
    [CmdletBinding(SupportsShouldProcess = $true)] 
    Param
    (
        [string]
        [Parameter(Mandatory = $true, HelpMessage = "Subscription id for which the security evaluation has to be performed.")]
        [ValidateNotNullOrEmpty()]
        $SubscriptionId,

        [string]
        [Parameter(Mandatory = $false, HelpMessage = "Provide a security contact email address or addresses separated by a comma. Recommended a mail enabled Security Group with receiving of external emails option turned ON.")]
        $SecurityContactEmails,

        [string]
        [Parameter(Mandatory = $false, HelpMessage = "Provide a security contact international information phone number including the country code (for example, +1-425-1234567)")]
        $SecurityPhoneNumber,

        [switch]
        [Parameter(Mandatory = $false, HelpMessage = "Switch to apply ASC configurations forcefully regardless of latest configurations already present on subscription.")]
        $Force,

        [switch]
        [Parameter(Mandatory = $false, HelpMessage = "Switch to specify whether to open output folder containing all security evaluation report or not.")]
        $DoNotOpenOutputFolder
    )

    Begin
    {
        [CommandHelper]::BeginCommand($PSCmdlet.MyInvocation);
        [ListenerHelper]::RegisterListeners();
    }

    Process
    {
     try 
        {
            $secCenter = [SecurityCenterStatus]::new($SubscriptionId, $PSCmdlet.MyInvocation);
            if ($secCenter) 
            {
                $secCenter.SecurityContactEmails = $SecurityContactEmails;
                $secCenter.SecurityPhoneNumber = $SecurityPhoneNumber;
                return $secCenter.SetPolicies();
            }
        }
        catch 
        {
            [EventBase]::PublishGenericException($_);
        }  
    }

    End
    {
        [ListenerHelper]::UnregisterListeners();
    }
}