Scripts/Clear-WOLDatabase.ps1


Function Clear-WOLDatabase {

    <#
 
     .SYNOPSIS
     Remove all records from the Wake On LAN database
 
     .DESCRIPTION
     Remove all records from the Wake On LAN database
 
     .PARAMETER Force
     This switch (optional) forces the deletion all records
     without prompting for confirmation
 
     .EXAMPLE
     Clear-WOLDatabase
 
     .EXAMPLE
     Clear-WOLDatabase -Force
 
     .NOTES
     N/A
 
     .LINK
     N/A
 
    #>


    [CmdletBinding (SupportsShouldProcess = $True,
                    ConfirmImpact = 'High'
                   )

    ]

    Param (

        [Switch]$Force

    )

    BEGIN {}

    PROCESS {

        If ($Force -and $WhatIfPreference -eq $False -or $PSCmdlet.ShouldProcess('Wake On LAN database', 'Removing all records')) {

            $Path = $MyInvocation.MyCommand.Module.ModuleBase + '\System.Data.SQLite.dll'

            Add-Type -Path $Path

            $DBConnect = New-Object -TypeName System.Data.SQLite.SQLiteConnection
            $DBConnect.ConnectionString = "Data Source = $env:ALLUSERSPROFILE\PSWakeOnLAN\WOLDatabase.db3"
            $DBConnect.Open()

            $SQL = $DBConnect.CreateCommand()
            $SQL.CommandText = 'DELETE FROM Computers'
            $SQL.ExecuteNonQuery() | Out-Null

            $SQL.Dispose()
            $DBConnect.Close()

            Write-Verbose -Message 'Database cleared'

        }

        Else {

            If ($WhatIfPreference -eq $False) {

                Write-Verbose -Message 'Deletion cancelled'

            }

        }

    }

    END {}

}