Scripts/Add-WOLComputerToDatabase.ps1
Function Add-WOLComputerToDatabase { <# .SYNOPSIS Add a computer to the Wake On LAN database .DESCRIPTION Add a computer to the Wake On LAN database .PARAMETER ComputerName The name of the computer to add to the database .PARAMETER MACAddress The computer's physical address .EXAMPLE Add-WOLComputerToDatabase -ComputerName LabPC2064 -MACAddress AA:11:22:33:44:FF .NOTES The computer names and MAC addresses must be unique .LINK N/A #> [CmdletBinding ()] Param ( [Parameter (Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True, HelpMessage = 'Enter computer name' ) ] [String[]]$ComputerName, [Parameter (Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelineByPropertyName = $True, HelpMessage = 'Enter MAC address' ) ] [String[]]$MACAddress ) BEGIN { $MACIndex = 0 } PROCESS { ForEach ($Computer In $ComputerName) { $Computer = $Computer.toUpper() $MACEntry = $MACAddress[$MACIndex].ToUpper() If ($MACEntry -notmatch '^([0-9A-F]{2}[:-]){5}([0-9A-F]{2})$') { [PsCustomObject]@{ 'ComputerName' = $Computer 'MACAddress' = $MACEntry 'Status' = 'MAC address not formatted properly' } } Else { $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 = "SELECT * FROM Computers WHERE Computer = ""$Computer"" OR MAC = ""$MACEntry""" $Adapter = New-Object -TypeName System.Data.SQLite.SQLiteDataAdapter $SQL $Data = New-Object System.Data.DataSet $Result = $Adapter.Fill($Data) If ($Result -gt 0) { $Status = 'Computer or MAC already in database' } Else { $SQL.CommandText = 'INSERT INTO Computers (Computer, MAC) VALUES (@Computer, @MAC)' $SQL.Parameters.AddWithValue('@Computer', $Computer) | Out-Null $SQL.Parameters.AddWithValue('@MAC', $MACEntry) | Out-Null $SQL.ExecuteNonQuery() | Out-Null $Status = 'Added to database' } $SQL.Dispose() $DBConnect.Close() [PsCustomObject]@{ 'ComputerName' = $Computer 'MACAddress' = $MACEntry 'Status' = $Status } } $MACIndex++ } } END {} } |