Scripts/Get-WOLComputer.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93

Function Get-WOLComputer {

    <#
 
     .SYNOPSIS
     Get the computer and MAC address from the database
 
     .DESCRIPTION
     Get the computer and MAC address from the database
 
     .PARAMETER ComputerName
     The computer name to query
 
     .EXAMPLE
     Get-WOLComputer -ComputerName LabPC2064
 
     .EXAMPLE
     Get-WOLComputer -ComputerName %
 
     This will display all the records in the database
 
     .NOTES
     N/A
 
     .LINK
     N/A
 
    #>


    [CmdletBinding ()]

    Param (

        [Parameter (Mandatory = $True,
                    ValueFromPipeline = $True,
                    ValueFromPipelineByPropertyName = $True,
                    HelpMessage = 'Enter computer name'
                   )
        ]

        [String[]]$ComputerName

    )

    BEGIN {

        $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()

    }

    PROCESS {

        ForEach ($Computer In $ComputerName) {

            $SQL = $DBConnect.CreateCommand()
            $SQL.CommandText = "SELECT * FROM Computers WHERE Computer LIKE ""%$Computer%"""

            $Adapter = New-Object -TypeName System.Data.SQLite.SQLiteDataAdapter $SQL

            $Data = New-Object System.Data.DataSet
            $Records = $Adapter.Fill($Data)

            Write-Verbose -Message "Records found = $Records"
            ForEach ($Item In $Data.Tables.Rows) {

                [PsCustomObject]@{

                    'ComputerName' = $Item.Computer
                    'MACAddress' = $Item.MAC

                }

            }

        }

    }

    END {

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

    }

}