# Helper functions to be used across resources

Function New-DellEventLog{
[CmdletBinding()]
    param( 
            [Parameter (Mandatory=$false)][System.string] $LogName="DellClientBIOS PowerShell",
            [Parameter (Mandatory=$false)][System.string] $SourceName="DellBIOSProvider DSC"
         )

         $CustomLog = Get-EventLog -list | Where-object { $_.logdisplayname -eq $LogName}
         if (! $CustomLog) {
             $ErrorActionPreference = "Continue"
             try{
                 New-EventLog -LogName $LogName -Source $SourceName
                 Write-EventLog -LogName $LogName -Source $SourceName -EntryType Information -EventID 0 -Message "DellBIOSProvider DSC started."
             }
         
             catch [System.Security.SecurityException] {
              Write-Error "Error:  Run as elevated user.  Unable to write or read to event logs."
            }
         }
         

}

Function Write-DellEventLog{

[CmdletBinding()]
  [OutputType([int])]
    param(
       [Parameter (Mandatory=$false)] [System.string]$LogName="DellClientBIOS PowerShell",
       [Parameter (Mandatory=$false)] [System.string] $SourceName = "DellBIOSProvider DSC",
       [Parameter (Mandatory=$false)] [System.Int16] $EventID=0,
       [Parameter (Mandatory=$false)] [System.String] $EntryType='Information',
       [Parameter(Mandatory=$true)]   [string]$Message
    )

     $CustomLog = Get-EventLog -list | Where-object { $_.logdisplayname -eq $LogName}
         if (! $CustomLog) {
            New-DellEventLog
         }
    Write-EventLog -LogName $LogName -Source $SourceName -EntryType $EntryType -EventID $EventID -Message $Message


}

function Confirm-DellPSDrive{
 [CmdletBinding()]

    # Check if DellBIOSProvider module has already been loaded into the PS session

    $DellPSProvider = Get-Module -name DellBIOSProvider

    if ( !$DellPSProvider)
    {
        Write-Verbose "Drive DellSmbios is not found. Importing DellBiosProvider."
        import-module -name DellBiosProvider -verbose -force -ErrorVariable errorInModule
        If ($errorInModule)
        {
             $Message = “Module DellBiosProvider failed to import. Errors returned: $($errorInModule.exception.message)”
             Throw $Message
        }
        else {
            return $false #  Module was not already loaded
        }
    }
    else
    {
        return $true}
}


function CheckModuleLoaded{
 [CmdletBinding()]

    # Check if DellBIOSProvider module has already been loaded into the PS session

    $DellPSProvider = Get-Module -name DellBIOSProvider

    if ( !$DellPSProvider)
    {
            return $false #  Module was not already loaded
    }
    else
    {
        return $true
    }
}
# SIG # Begin signature block
# MIIVqQYJKoZIhvcNAQcCoIIVmjCCFZYCAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCC6x9zLFGpcQgL3
# nD3MHa+Ep3xyKa03AHXTmy14xLaVWKCCCiMwggTCMIIDqqADAgECAhAiNl3Koo7M
# bamHXZYvcHGpMA0GCSqGSIb3DQEBCwUAMH8xCzAJBgNVBAYTAlVTMR0wGwYDVQQK
# ExRTeW1hbnRlYyBDb3Jwb3JhdGlvbjEfMB0GA1UECxMWU3ltYW50ZWMgVHJ1c3Qg
# TmV0d29yazEwMC4GA1UEAxMnU3ltYW50ZWMgQ2xhc3MgMyBTSEEyNTYgQ29kZSBT
# aWduaW5nIENBMB4XDTE4MDkyNzAwMDAwMFoXDTIxMDkyNjIzNTk1OVowWjELMAkG
# A1UEBhMCVVMxDjAMBgNVBAgMBVRleGFzMRMwEQYDVQQHDApSb3VuZCBSb2NrMRIw
# EAYDVQQKDAlEZWxsIEluYy4xEjAQBgNVBAMMCURlbGwgSW5jLjCCASIwDQYJKoZI
# hvcNAQEBBQADggEPADCCAQoCggEBAK2E5sUV7O7RXKt547mMdmq27CulgmONL6w3
# 2c5gs7vQsH3KWy9Q5rQ83MEPnRncZy71Alrky1G3dV3d1CxH7kH8xfu+YOUR+OVo
# VOFgkoT4tY2xST2B+WfS1jXJKzj5VQuOTn/f2Qie3mA02e3/YlTAMUmOqi4a2gNH
# 3r/de81Yj3e/DqzFV5rWrTfdZ7SQNoWVKA/cVu5KrPdXPjqMpRMxnjP4WPzs6eR0
# 4ONH6tvUNWP6PCrRxg5EIpKhbW0DZxvp1VqXDCyQLe98cjgbgD+0pUDrBGa3pxB3
# iJVBvZ5WI/OL0KxlvFtWrdEjIxTnwmq8pqp8i99v3u4LxrQEtZ0CAwEAAaOCAV0w
# ggFZMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeAMCsGA1UdHwQkMCIwIKAeoByG
# Gmh0dHA6Ly9zdi5zeW1jYi5jb20vc3YuY3JsMGEGA1UdIARaMFgwVgYGZ4EMAQQB
# MEwwIwYIKwYBBQUHAgEWF2h0dHBzOi8vZC5zeW1jYi5jb20vY3BzMCUGCCsGAQUF
# BwICMBkMF2h0dHBzOi8vZC5zeW1jYi5jb20vcnBhMBMGA1UdJQQMMAoGCCsGAQUF
# BwMDMFcGCCsGAQUFBwEBBEswSTAfBggrBgEFBQcwAYYTaHR0cDovL3N2LnN5bWNk
# LmNvbTAmBggrBgEFBQcwAoYaaHR0cDovL3N2LnN5bWNiLmNvbS9zdi5jcnQwHwYD
# VR0jBBgwFoAUljtT8Hkzl699g+8uK8zKt4YecmYwHQYDVR0OBBYEFNKZNdkAeaso
# MvcuUOlErixyOmzRMA0GCSqGSIb3DQEBCwUAA4IBAQBujEZqs+dJwHwXRBl4HNxI
# uOlp7kvlwIMdR+prfX31DALJEEn6qGHHpTMJaIVULHjqindsIDBuANm6fLTWuEPN
# bE1W5hd/XdOTKuWJaluAStl32Q0gdsc2nQLVo9KS6b3yJeTFWquDMg0oJrUcQS5n
# vxpKfKsukni83wb8dZxXTehzj6TcHdSqMPiU6KxfYB3+PcOfp00obHqOeRDuE8mB
# LupPJdUCbK+cq15n+o//wOi6dvoEu3xqJ3lGVDBN1MwbulMbYMt0UDonmn16Tkhj
# 80WP5zL65G9kbLD0Vifp4uddXjcHrwu4WEggab49TtcPNayPEofQXRdoHcmx5Tyh
# MIIFWTCCBEGgAwIBAgIQPXjX+XZJYLJhffTwHsqGKjANBgkqhkiG9w0BAQsFADCB
# yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
# ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp
# U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW
# ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0
# aG9yaXR5IC0gRzUwHhcNMTMxMjEwMDAwMDAwWhcNMjMxMjA5MjM1OTU5WjB/MQsw
# CQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNV
# BAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxMDAuBgNVBAMTJ1N5bWFudGVjIENs
# YXNzIDMgU0hBMjU2IENvZGUgU2lnbmluZyBDQTCCASIwDQYJKoZIhvcNAQEBBQAD
# ggEPADCCAQoCggEBAJeDHgAWryyx0gjE12iTUWAecfbiR7TbWE0jYmq0v1obUfej
# DRh3aLvYNqsvIVDanvPnXydOC8KXyAlwk6naXA1OpA2RoLTsFM6RclQuzqPbROlS
# Gz9BPMpK5KrA6DmrU8wh0MzPf5vmwsxYaoIV7j02zxzFlwckjvF7vjEtPW7ctZlC
# n0thlV8ccO4XfduL5WGJeMdoG68ReBqYrsRVR1PZszLWoQ5GQMWXkorRU6eZW4U1
# V9Pqk2JhIArHMHckEU1ig7a6e2iCMe5lyt/51Y2yNdyMK29qclxghJzyDJRewFZS
# AEjM0/ilfd4v1xPkOKiE1Ua4E4bCG53qWjjdm9sCAwEAAaOCAYMwggF/MC8GCCsG
# AQUFBwEBBCMwITAfBggrBgEFBQcwAYYTaHR0cDovL3MyLnN5bWNiLmNvbTASBgNV
# HRMBAf8ECDAGAQH/AgEAMGwGA1UdIARlMGMwYQYLYIZIAYb4RQEHFwMwUjAmBggr
# BgEFBQcCARYaaHR0cDovL3d3dy5zeW1hdXRoLmNvbS9jcHMwKAYIKwYBBQUHAgIw
# HBoaaHR0cDovL3d3dy5zeW1hdXRoLmNvbS9ycGEwMAYDVR0fBCkwJzAloCOgIYYf
# aHR0cDovL3MxLnN5bWNiLmNvbS9wY2EzLWc1LmNybDAdBgNVHSUEFjAUBggrBgEF
# BQcDAgYIKwYBBQUHAwMwDgYDVR0PAQH/BAQDAgEGMCkGA1UdEQQiMCCkHjAcMRow
# GAYDVQQDExFTeW1hbnRlY1BLSS0xLTU2NzAdBgNVHQ4EFgQUljtT8Hkzl699g+8u
# K8zKt4YecmYwHwYDVR0jBBgwFoAUf9Nlp8Ld7LvwMAnzQzn6Aq8zMTMwDQYJKoZI
# hvcNAQELBQADggEBABOFGh5pqTf3oL2kr34dYVP+nYxeDKZ1HngXI9397BoDVTn7
# cZXHZVqnjjDSRFph23Bv2iEFwi5zuknx0ZP+XcnNXgPgiZ4/dB7X9ziLqdbPuzUv
# M1ioklbRyE07guZ5hBb8KLCxR/Mdoj7uh9mmf6RWpT+thC4p3ny8qKqjPQQB6rqT
# og5QIikXTIfkOhFf1qQliZsFay+0yQFMJ3sLrBkFIqBgFT/ayftNTI/7cmd3/SeU
# x7o1DohJ/o39KK9KEr0Ns5cF3kQMFfo2KwPcwVAB8aERXRTl4r0nS1S+K4ReD6bD
# dAUK75fDiSKxH3fzvc1D1PFMqT+1i4SvZPLQFCExggrcMIIK2AIBATCBkzB/MQsw
# CQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNV
# BAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxMDAuBgNVBAMTJ1N5bWFudGVjIENs
# YXNzIDMgU0hBMjU2IENvZGUgU2lnbmluZyBDQQIQIjZdyqKOzG2ph12WL3BxqTAN
# BglghkgBZQMEAgEFAKCBrDAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgor
# BgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQgmLbhyoYw
# ooy+l7LjpeWgbyEHa1X1rujcrgeDkc+9u9wwQAYKKwYBBAGCNwIBDDEyMDCgFoAU
# AEQAZQBsAGwALAAgAEkAbgBjAC6hFoAUaHR0cDovL3d3dy5kZWxsLmNvbSAwDQYJ
# KoZIhvcNAQEBBQAEggEAcLJIFJ38c96vVK0+ZsNxa/3TCuMhctIpl04amErN4wOW
# OWAK5qYghiQXfhZJjDqEnr5HWjTUVX9q71Do07goFx636OmitLEeRzEG5iv0+vLk
# Cs1JZ8IonZ5JTjfYWG9djn3z9Bp6xIHXblTEyPHkuTlahBMdJmbV+ZexBxrhrDsr
# pR1DR78nGMgUMzWUenq7gV6cL593UzDY4O+o7+TppeK+2sOqOMbIsqIGAj/wlKDX
# bGzBoIcPqgJoYg55G3WIEsnnTpmOPpb05p9bRPYJc9f4Go/fkwAI+/6amt7Rhpoy
# LP443fMM6+A+cU/SHK2QlJ10HBW27nOr6pr13XR6XKGCCGowgghmBgorBgEEAYI3
# AwMBMYIIVjCCCFIGCSqGSIb3DQEHAqCCCEMwggg/AgEDMQ8wDQYJYIZIAWUDBAIB
# BQAwggEOBgsqhkiG9w0BCRABBKCB/gSB+zCB+AIBAQYKKwYBBAGyMQIBATAxMA0G
# CWCGSAFlAwQCAQUABCAbirjtxu4miwg8sYCVqWyp52ecfS4tp5s1b7CC2bhG2gIU
# UTUZ5unE2230Hw/hwSHwNZ0JKDcYDzIwMTkwNDIyMDYwNDUxWqCBjKSBiTCBhjEL
# MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE
# BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxLDAqBgNVBAMT
# I0NPTU9ETyBTSEEtMjU2IFRpbWUgU3RhbXBpbmcgU2lnbmVyoIIEoDCCBJwwggOE
# oAMCAQICEE6wh4/MJDU2stjJ9785VXcwDQYJKoZIhvcNAQELBQAwgZUxCzAJBgNV
# BAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxHjAc
# BgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3
# dy51c2VydHJ1c3QuY29tMR0wGwYDVQQDExRVVE4tVVNFUkZpcnN0LU9iamVjdDAe
# Fw0xNTEyMzEwMDAwMDBaFw0xOTA3MDkxODQwMzZaMIGGMQswCQYDVQQGEwJHQjEb
# MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRow
# GAYDVQQKExFDT01PRE8gQ0EgTGltaXRlZDEsMCoGA1UEAxMjQ09NT0RPIFNIQS0y
# NTYgVGltZSBTdGFtcGluZyBTaWduZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
# ggEKAoIBAQDOvHS3cIBPXvM/mKouy9QSASM1aQsivOb9CWwo5BMSrLu6LeXV3SLu
# c7Ys+NKkcedJJXirJbeQEKCbi3cm3UDqQaP9iM1ypok7UFcceiUkIgJRQDVnijFp
# DeU5c0k5m5UBhVLyKxSJmk4EpLxArjmm3UAC4Dp1/j19VZRb8U4kfMi4WBnKwNq+
# WBOa5hzn0cE78F2PSQghntDzvtbUZk9ccjZ7w4LTmAiUr6tETxjHFNoWsR4yDhI4
# wLU8dux1UAAgBBEZ7cb/307+CIEnMU9xdG4DDHAngVVqmkOSpH/b/T/FFx5Bu87o
# p3+Mlfn9f/hhiIkAPv8LAdv91bWk5JERAgMBAAGjgfQwgfEwHwYDVR0jBBgwFoAU
# 2u1kdBScFDyr3ZmpvVsoTYs8ydgwHQYDVR0OBBYEFH2/kdenbFpHZkR7kNSOkHJB
# jxfCMA4GA1UdDwEB/wQEAwIGwDAMBgNVHRMBAf8EAjAAMBYGA1UdJQEB/wQMMAoG
# CCsGAQUFBwMIMEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6Ly9jcmwudXNlcnRydXN0
# LmNvbS9VVE4tVVNFUkZpcnN0LU9iamVjdC5jcmwwNQYIKwYBBQUHAQEEKTAnMCUG
# CCsGAQUFBzABhhlodHRwOi8vb2NzcC51c2VydHJ1c3QuY29tMA0GCSqGSIb3DQEB
# CwUAA4IBAQBQsPXfX60z3MNTWFi8whN1eyAdVMq6P1A/uor0awljwFtdi9Z1GnO9
# i/9H8RXcURYjGTLmbpJN0cYuWh6IQhTJcuXXCFCKavVkQFauJONhlxVC8CxIroPm
# NTyLW8KPro7MNFI04Pv+yv2xJGjRpBEjEAb9ssIkJ8fX6Uocjz8+z+3rdXlsjl/3
# IbZQ5iWhzWaUEmy/27Ouh9hoA3IgAsJ+2pTzcgc8V+hVJOcFoB3EgQGCSx8/D50z
# m/BPzJ3WhYHPy+f9SumSuPcNcnMt6Xf5b48oej4evQiG3I0eEV/3W7uHdsaeTFRh
# 0Gfbk4TaMYcDkuef4+nPWlbIaOBSSZRcMYICcTCCAm0CAQEwgaowgZUxCzAJBgNV
# BAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxHjAc
# BgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3
# dy51c2VydHJ1c3QuY29tMR0wGwYDVQQDExRVVE4tVVNFUkZpcnN0LU9iamVjdAIQ
# TrCHj8wkNTay2Mn3vzlVdzANBglghkgBZQMEAgEFAKCBmDAaBgkqhkiG9w0BCQMx
# DQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTE5MDQyMjA2MDQ1MVowKwYL
# KoZIhvcNAQkQAgwxHDAaMBgwFgQUNlJ9T6JqaPnrRZbx2Zq7LA6nbfowLwYJKoZI
# hvcNAQkEMSIEIGKPycdBudEEwjeZnG3nktd/qb79ZGsmKRWiWsIhq/n9MA0GCSqG
# SIb3DQEBAQUABIIBAI5Odb6vSIj5bdXZFeCFBJfjjHOrf1Wkq/suZfX14cIUTuwH
# BW3tKOGK6gQiqYUtSMXcESM0/23O7q8jY/BgYzKDzL9xkV92E/NTwzKQPxdRc2e9
# sxmNItuW3F02b2zu8fk+iVYJUOtEsa9T7gk1XNAJGvQfTmeuTm2HmmtopnRZSMyh
# WU7iOhFrX1a6t13KZb/nL+Svuo2JN3bP3LVsWAMq0UQaXY94YG4CdngsCxiNXk/D
# W9Bw3wLhLnlzh/MvwjtdMf1luAH/Q/wqKoLgZFogTx9dklsjKioe2S+i/FOLWpuw
# j4buo0OVTjnUxZBxWGZLbqISeN29hXl0tkTWjsA=
# SIG # End signature block
