Write-DellBIOSPassword.ps1

Function Write-DellBIOSPassword {
<#
  .Synopsis
    Writes a Dell BIOS password from secure string storage
  .Description
    Writes a DellBIOS password to System.Security.SecureString in the local app directory of the user.
  .Example
    Write-DellBIOSPassword
  .Example
    $DellBIOSCredential = Write-DellBIOSPassword
  .Example
    $SecureStringPwd = Read-Host -AsSecureString
    Write-DellBIOSPassword –Password $SecureStringPwd
  .Example
    Write-DellBIOSPassword [[-FilePath] <String>] [[-Key] <String>] [[-Hint] <String>] [-Password] <SecureString> [<CommonParameters>]
    #>


[CmdletBinding()]
Param (
  [Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$true, position=0, HelpMessage="Path to Password File")] [string] $FilePath,
  [Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$false, position=1, HelpMessage="An ASCII Key of 128,196 of 256 Length")] [byte []] $Key,    
  [Parameter(Mandatory=$false,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$false, position=2, HelpMessage="Password Hint")] [string] $Hint, 
  [Parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true,ValueFromPipeline=$false, position=5, HelpMessage="DellBIOS Password")] [System.Security.SecureString] $Password
 ) 


PROCESS {

    if ([string]::IsNullOrEmpty($FilePath))
    {
        $FilePath = (Get-DellBIOSPasswordPath).DellBIOSPwdFilePath
    }
    
    if ( (test-path $FilePath) -eq $false)
    {
        $fileItem = new-item -path $FilePath -itemtype file -force
    }

    [Xml]$xml="<Credential><Password></Password><Encryption>DAPI</Encryption></Credential>"

    if ([string]::IsNullOrEmpty($Key))
    {
        $xml.Credential.Password= (ConvertFrom-SecureString -SecureString $Password).ToString()
        $xml.Credential.Encryption="DPAPI"
        Set-Content $FilePath $xml.OuterXml
    }
    else
    {        
        $xml.Credential.Password= (ConvertFrom-SecureString -SecureString $Password -Key $Key).ToString()
        $xml.Credential.Encryption="Rijndael"
        Set-Content $FilePath $xml.OuterXml
    }

  }#EndProcess
}#end Function


# SIG # Begin signature block
# MIIbEwYJKoZIhvcNAQcCoIIbBDCCGwACAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCCqwat+URn/SR/y
# xPPlY1sNGQA0cA3NEFwI7hl1jsE9QqCCCiMwggTCMIIDqqADAgECAhAiNl3Koo7M
# 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+1i4SvZPLQFCExghBGMIIQQgIBATCBkzB/MQsw
# CQYDVQQGEwJVUzEdMBsGA1UEChMUU3ltYW50ZWMgQ29ycG9yYXRpb24xHzAdBgNV
# BAsTFlN5bWFudGVjIFRydXN0IE5ldHdvcmsxMDAuBgNVBAMTJ1N5bWFudGVjIENs
# YXNzIDMgU0hBMjU2IENvZGUgU2lnbmluZyBDQQIQIjZdyqKOzG2ph12WL3BxqTAN
# BglghkgBZQMEAgEFAKCBrDAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgor
# BgEEAYI3AgELMQ4wDAYKKwYBBAGCNwIBFTAvBgkqhkiG9w0BCQQxIgQgOVgIV1Y3
# 0cDV7ulXDzDWHN5YCZ7b85ygWfoK3X8CbRYwQAYKKwYBBAGCNwIBDDEyMDCgFoAU
# AEQAZQBsAGwALAAgAEkAbgBjAC6hFoAUaHR0cDovL3d3dy5kZWxsLmNvbSAwDQYJ
# KoZIhvcNAQEBBQAEggEAQuahVKiblJYqqrxlgXkT70tsgf3YpvtS3HBsw+RKOUwD
# H99LS2BwStkTgITW8q3KNVwDXLGZ8ueFQ5LqFsW9iXIm36nUjyVg4QNn2d9OuMTe
# BsUhaTk9+PnrigFi3+yO93kUWfZQzs51MFsk/+RCD1yW7Yi2qFQCJAY1KmonsMsh
# STW4gylaFZZOvT6vYfYLiLCd0iqN3Q4M/Qq2Uk9vQWzdDl7YK+8pe4eLagw0efa8
# 4Y1aRQjwJXTdd7rcI7Jch+U/PQhht1IayItr6527L7iryts5RQV7s1yXSBRufABI
# NFyC9mEOUniJx0+OoeUiZVYrvczk5jXKaJuMMLcFvqGCDdQwgg3QBgorBgEEAYI3
# AwMBMYINwDCCDbwGCSqGSIb3DQEHAqCCDa0wgg2pAgEDMQ8wDQYJYIZIAWUDBAIB
# BQAwbQYLKoZIhvcNAQkQAQSgXgRcMFoCAQEGCmCGSAGG/W4BBxgwMTANBglghkgB
# ZQMEAgEFAAQgUyS168P/iTVzrTJFGdSKrkwOMDjSzQbwz8h9GIfOx6MCBTFBD91u
# GA8yMDE5MDQyMjA1NTUwMFqgggqEMIIFADCCA+igAwIBAgIBBzANBgkqhkiG9w0B
# AQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcT
# ClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9sb2dpZXMsIElu
# Yy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0
# eSAtIEcyMB4XDTExMDUwMzA3MDAwMFoXDTMxMDUwMzA3MDAwMFowgcYxCzAJBgNV
# BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUw
# IwYDVQQKExxTdGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTMwMQYDVQQLEypo
# dHRwOi8vY2VydHMuc3RhcmZpZWxkdGVjaC5jb20vcmVwb3NpdG9yeS8xNDAyBgNV
# BAMTK1N0YXJmaWVsZCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IC0gRzIw
# ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDlkGZL7PlGcakgg77pbL9K
# yUhpgXVObST2yxcT+LBxWYR6ayuFpDS1FuXLzOlBcCykLtb6Mn3hqN6UEKwxwcDY
# av9ZJ6t21vwLdGu4p64/xFT0tDFE3ZNWjKRMXpuJyySDm+JXfbfYEh/JhW300YDx
# UJuHrtQLEAX7J7oobRfpDtZNuTlVBv8KJAV+L8YdcmzUiymMV33a2etmGtNPp99/
# UsQwxaXJDgLFU793OGgGJMNmyDd+MB5FcSM1/5DYKp2N57CSTTx/KgqT3M0WRmX3
# YISLdkuRJ3MUkuDq7o8W6o0OPnYXv32JgIBEQ+ct4EMJddo26K3biTr1XRKOIwSD
# AgMBAAGjggEsMIIBKDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAd
# BgNVHQ4EFgQUJUWBaFAmOD07LSy+zWrZtj2zZmMwHwYDVR0jBBgwFoAUfAwyH6fZ
# MH/EfWijYqihzqsHWycwOgYIKwYBBQUHAQEELjAsMCoGCCsGAQUFBzABhh5odHRw
# Oi8vb2NzcC5zdGFyZmllbGR0ZWNoLmNvbS8wOwYDVR0fBDQwMjAwoC6gLIYqaHR0
# cDovL2NybC5zdGFyZmllbGR0ZWNoLmNvbS9zZnJvb3QtZzIuY3JsMEwGA1UdIARF
# MEMwQQYEVR0gADA5MDcGCCsGAQUFBwIBFitodHRwczovL2NlcnRzLnN0YXJmaWVs
# ZHRlY2guY29tL3JlcG9zaXRvcnkvMA0GCSqGSIb3DQEBCwUAA4IBAQBWZcr+8z8K
# qJOLGMfeQ2kTNCC+Tl94qGuc22pNQdvBE+zcMQAiXvcAngzgNGU0+bE6TkjIEoGI
# XFs+CFN69xpk37hQYcxTUUApS8L0rjpf5MqtJsxOYUPl/VemN3DOQyuwlMOS6eFf
# qhBJt2nk4NAfZKQrzR9voPiEJBjOeT2pkb9UGBOJmVQRDVXFJgt5T1ocbvlj2xSA
# pAer+rKluYjdkf5lO6Sjeb6JTeHQsPTIFwwKlhR8Cbds4cLYVdQYoKpBaXAko7nv
# 6VrcPuuUSvC33l8Odvr7+2kDRUBQ7nIMpBKGgc0T0U7EPMpODdIm8QC3tKai4W56
# gf0wrHofx1l7MIIFfDCCBGSgAwIBAgIIV+tr3ICriUwwDQYJKoZIhvcNAQELBQAw
# gcYxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290
# dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTMw
# MQYDVQQLEypodHRwOi8vY2VydHMuc3RhcmZpZWxkdGVjaC5jb20vcmVwb3NpdG9y
# eS8xNDAyBgNVBAMTK1N0YXJmaWVsZCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9y
# aXR5IC0gRzIwHhcNMTkwNDE1MDcwMDAwWhcNMjQwNDE1MDcwMDAwWjCBhzELMAkG
# A1UEBhMCVVMxEDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUx
# JDAiBgNVBAoTG1N0YXJmaWVsZCBUZWNobm9sb2dpZXMsIExMQzErMCkGA1UEAxMi
# U3RhcmZpZWxkIFRpbWVzdGFtcCBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcN
# AQEBBQADggEPADCCAQoCggEBAM6vIONtCudqEs8F/KvxFebFWIXYSc63OfxUG4kD
# q2sdD2WDKASnpyVqPbEUJMKpK8aEy86M8z6lPyxth+ZJ5MOtuXEjBwe+BRh7Tx4x
# I7uLX50BQyPlz80Rob0jzK8z74OcxhlU/xZLuc/gI1OizzzRVker8VbM9WatMunE
# iy9IiaIz9NUkelbXzacwzAru6fDrabbR/xhv6IY9wzLq79DQq3q86I85lhK+aBvJ
# 9qrVQIdhfypm8zZkNsBzcxlRRpvWAdYlXRvTPle8wLNx2G50iShYvpNeFBYBGGol
# Z4cUQkvikRMvJxD2helCCNehcZt4CYSYTrt89uWD5JO+D2ECAwEAAaOCAakwggGl
# MAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgbAMBYGA1UdJQEB/wQMMAoGCCsG
# AQUFBwMIMB0GA1UdDgQWBBR6q6kuLchs4yV49kbWxZsIun8q7zAfBgNVHSMEGDAW
# gBQlRYFoUCY4PTstLL7Natm2PbNmYzCBhAYIKwYBBQUHAQEEeDB2MCoGCCsGAQUF
# BzABhh5odHRwOi8vb2NzcC5zdGFyZmllbGR0ZWNoLmNvbS8wSAYIKwYBBQUHMAKG
# PGh0dHA6Ly9jcmwuc3RhcmZpZWxkdGVjaC5jb20vcmVwb3NpdG9yeS9zZl9pc3N1
# aW5nX2NhLWcyLmNydDBUBgNVHR8ETTBLMEmgR6BFhkNodHRwOi8vY3JsLnN0YXJm
# aWVsZHRlY2guY29tL3JlcG9zaXRvcnkvbWFzdGVyc3RhcmZpZWxkMmlzc3Vpbmcu
# Y3JsMFAGA1UdIARJMEcwRQYLYIZIAYb9bgEHFwIwNjA0BggrBgEFBQcCARYoaHR0
# cDovL2NybC5zdGFyZmllbGR0ZWNoLmNvbS9yZXBvc2l0b3J5LzANBgkqhkiG9w0B
# AQsFAAOCAQEAOD3/dHAAso9r3/r2AcM5Q9Q0IOmWfKkMuC7zkr5Qc9ZnE29HEfRU
# 1KMmONGNihC6P1TGPe60lBN13mIrgg3UEvSwm9iZVReJuvGhBa8ni6oHu8759N/Y
# mDsNonKucHvGLkXdCYAl99/BklzxxxXV18M9qav/fbs6BXM7/OlN/rrGhvbX2D4P
# oXWtQSMwgz2EvWHKmqlIDALMDP/1TOK1+Uynyomlr3w0rpkUuMwLEFR8XoqL9bnH
# 456MyLD4LhWzusGQ5X5f/pDjD57JsQ9xwHAG9C0la4I3ZOh0ddkkCrTlYRrW11kD
# FD6ZivU8asoJo9e8zDHWJR8DcKPWQlKazDGCApowggKWAgEBMIHTMIHGMQswCQYD
# VQQGEwJVUzEQMA4GA1UECBMHQXJpem9uYTETMBEGA1UEBxMKU2NvdHRzZGFsZTEl
# MCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEzMDEGA1UECxMq
# aHR0cDovL2NlcnRzLnN0YXJmaWVsZHRlY2guY29tL3JlcG9zaXRvcnkvMTQwMgYD
# VQQDEytTdGFyZmllbGQgU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcy
# AghX62vcgKuJTDANBglghkgBZQMEAgEFAKCBmDAaBgkqhkiG9w0BCQMxDQYLKoZI
# hvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTE5MDQyMjA1NTUwMFowKwYLKoZIhvcN
# AQkQAgwxHDAaMBgwFgQUDnHryjndKIMiRT82Vvyp1oyR8JcwLwYJKoZIhvcNAQkE
# MSIEIPkVHENsMVOpmB0tVrKjmj7FrRRczuT1a13sg+t+YFbzMA0GCSqGSIb3DQEB
# AQUABIIBAMVjn+gMzK4xJQtS4/PzibTSJvpgBA1TzUnfEcmWJQGtgDUy+gXEQxKc
# Y57+kcM9SJ22R5ejEJYAI9zNAdBrn2/sRVlfb+tfTJo8LXllXaWCWFH28NOWjXWm
# 3+Uw13TM+K1SL6roHgWuMggj95v2pBvoyDK7PGa2MpvQcIpnK0YVZ0buSBr/bmXm
# uD4cbx2fYtPhn2aLMz4oOwTx1xMxUFqc41DXq5GT/bt9SPEEpR0nEthvpTGBaJtV
# rK6DFtzEIX2yHxReO3X/X9ZVI9Oq9c9qXjCucnfCp1v6j04aINlBmdVJ1G3qQ964
# EugJMzng0/YvMHLOrvPVlHUgbiTB7lY=
# SIG # End signature block