PowerWamp.psm1
Write-Verbose 'Importing from [C:\projects\powerwamp\PowerWamp\private]' # .\PowerWamp\private\Connect-MySQL.ps1 Function Connect-MySQL { <# .SYNOPSIS A powershell function to connect to a MySQL Database. .DESCRIPTION Executes the Query. .PARAMETER ConnectionString A valid MySQL string is required. .EXAMPLE $MySQLconn = (Connect-MySQL $ConnectionString) .NOTES No additional notes. #> param( [Parameter(Mandatory = $true)] [string]$ConnectionString ) try { # Load MySQL .NET Connector Objects [void][System.Reflection.Assembly]::LoadWithPartialName("MySql.Data") $Connection = New-Object MySql.Data.MySqlClient.MySqlConnection $Connection.ConnectionString = $ConnectionString # Open Connection $Connection.Open() return $Connection } Catch { $ErrorMessage = $_.Exception.Message $FailedItem = $_.Exception.ItemName write-host "Connection Error:" $ErrorMessage $FailedItem BREAK } } # .\PowerWamp\private\Disconnect-MySQL.ps1 Function Disconnect-MySQL { <# .SYNOPSIS A quick function to drop a MySQL connection. .DESCRIPTION disconnects a specified MySQL connection. .PARAMETER connection Please Specify a valid connection. .EXAMPLE Disconnect-MySQL $MySQLconn .NOTES No additional notes. #> param( [Parameter(Mandatory = $true)] $Connection ) try { # Disconnect from MySQL Database $Connection.Close() } Catch { $ErrorMessage = $_.Exception.Message $FailedItem = $_.Exception.ItemName write-host "Query Error:" $ErrorMessage $FailedItem BREAK } } Write-Verbose 'Importing from [C:\projects\powerwamp\PowerWamp\public]' # .\PowerWamp\public\Invoke-MySQLInsert.ps1 Function Invoke-MySQLInsert { <# .SYNOPSIS A powershell function to insert data into MySQL and return the ID of the last inserted item. .DESCRIPTION Executes the MySQL insert. .PARAMETER query A valid SQL query is required. .PARAMETER ConnectionString A valid connection string is required. .PARAMETER MySQLUsername A valid MySQL username is required. .PARAMETER MySQLPassword A valid MySQL password is required. .PARAMETER MySQLDatabase A valid MySQL Database is required. .PARAMETER MySQLServer A valid MySQL Server is required. .EXAMPLE Inserting row(s) $query = "insert into rts_properties (name,val) VALUES ('SAMPLE_DATA_NAME','SAMPLE_VALUE')" $MyConnectionString = "server=localhost;port=3306;uid=root;pwd=;database=summitrts" $LastItemID = @(Invoke-MySQLInsert -Query $query -ConnectionString $MyConnectionString)[1] .EXAMPLE Inserting row(s) $query = "insert into rts_properties (name,val) VALUES ('SAMPLE_DATA_NAME','SAMPLE_VALUE')" $LastItemID = @(Invoke-MySQLInsert -Query $query -MySQLUsername root -MySQLPassword " " -MySQLDatabase summitrts -MySQLServer localhost)[1] .NOTES no additional notes. #> [CmdletBinding(DefaultParameterSetName = 'ByConnectionString')] param( [Parameter(Mandatory = $true, ParameterSetName = 'ByConnectionString')] [Parameter(Mandatory = $true, ParameterSetName = 'ByItems')] [string]$Query, [Parameter(Mandatory = $true, ParameterSetName = 'ByConnectionString')] [string]$ConnectionString, [Parameter(Mandatory = $true, ParameterSetName = 'ByItems')] [string]$MySQLUsername, [Parameter(Mandatory = $true, ParameterSetName = 'ByItems')] [System.Security.SecureString]$MySQLPassword, [Parameter(Mandatory = $true, ParameterSetName = 'ByItems')] [string]$MySQLDatabase, [Parameter(Mandatory = $true, ParameterSetName = 'ByItems')] [string]$MySQLServer ) try { if ($ConnectionString -eq "") { $BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($MySQLPassword) $UnsecurePassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) $ConnectionString = "server=" + $MySQLServer + ";port=3306;uid=" + $MySQLUserName + ";pwd=" + $UnsecurePassword + ";database=" + $MySQLDatabase } $Connection = (Connect-MySQL $ConnectionString) # Create command object $Command = New-Object MySql.Data.MySqlClient.MySqlCommand($Query, $Connection) $Command.ExecuteNonQuery() #return the LastInsertedId return $Command.LastInsertedId } Catch { $ErrorMessage = $_.Exception.Message $FailedItem = $_.Exception.ItemName write-host "Query Error:" $ErrorMessage $FailedItem BREAK } Finally { #Disconnect from MySQL Disconnect-MySQL $Connection } } # .\PowerWamp\public\Invoke-MySQLQuery.ps1 Function Invoke-MySQLQuery { <# .SYNOPSIS A powershell function to run MySQL Queries. .DESCRIPTION Executes the Query. .PARAMETER query A valid SQL query is required. .PARAMETER ConnectionString A valid MySQL connection String is required. .PARAMETER MySQLUsername A valid MySQL username is required. .PARAMETER MySQLPassword A valid MySQL password is required. .PARAMETER MySQLDatabase A valid MySQL Database is required. .PARAMETER MySQLServer A valid MySQL Server is required. .EXAMPLE Query the DB for rows of information and setting that as an Object. $query = "select Testcase_name,Testcase_Status from test_cases" $MyConnectionString = "server=localhost;port=3306;uid=root;pwd=;database=summitrts" $Data = @(Invoke-MySQLQuery -Query $query -ConnectionString $MyConnectionString) .EXAMPLE Updating database row(s) $query = "update test_cases set Testcase_name = '$somevalue' where testcase_id = 1" $MyConnectionString = "server=localhost;port=3306;uid=root;pwd=;database=summitrts" Invoke-MySQLQuery -Query $query -ConnectionString $MyConnectionString .EXAMPLE Query the DB for rows of information and setting that as an Object. $query = "select Testcase_name,Testcase_Status from test_cases" $Data = @(Invoke-MySQLQuery -Query $query -MySQLUsername root -MySQLPassword "" -MySQLDatabase summitrts -MySQLServer localhost) .EXAMPLE Updating database row(s) $query = "update test_cases set Testcase_name = '$somevalue' where testcase_id = 1" Invoke-MySQLQuery -Query $query -MySQLUsername root -MySQLPassword "" -MySQLDatabase summitrts -MySQLServer localhost .NOTES No additional notes. #> [CmdletBinding(DefaultParameterSetName = 'ByConnectionString')] param( [Parameter(Mandatory = $true, ParameterSetName = 'ByConnectionString')] [Parameter(Mandatory = $true, ParameterSetName = 'ByItems')] [string]$Query, [Parameter(Mandatory = $true, ParameterSetName = 'ByConnectionString')] [string]$ConnectionString, [Parameter(Mandatory = $true, ParameterSetName = 'ByItems')] [string]$MySQLUsername, [Parameter(Mandatory = $true, ParameterSetName = 'ByItems')] [System.Security.SecureString]$MySQLPassword, [Parameter(Mandatory = $true, ParameterSetName = 'ByItems')] [string]$MySQLDatabase, [Parameter(Mandatory = $true, ParameterSetName = 'ByItems')] [string]$MySQLServer ) try { if ($ConnectionString -eq "") { $BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($MySQLPassword) $UnsecurePassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) $ConnectionString = "server=" + $MySQLServer + ";port=3306;uid=" + $MySQLUserName + ";pwd=" + $UnsecurePassword + ";database=" + $MySQLDatabase } $Connection = (Connect-MySQL $ConnectionString) # Create command object $Command = New-Object MySql.Data.MySqlClient.MySqlCommand($Query, $Connection) $DataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($Command) $DataSet = New-Object System.Data.DataSet $RecordCount = $dataAdapter.Fill($dataSet, "data") #return the data return $DataSet.Tables[0] } Catch { $ErrorMessage = $_.Exception.Message $FailedItem = $_.Exception.ItemName write-host "Query Error:" $ErrorMessage $FailedItem BREAK } Finally { #Disconnect from MySQL Disconnect-MySQL $Connection } } # .\PowerWamp\public\Invoke-Wamp.ps1 Function Invoke-Wamp { <# .SYNOPSIS A quick function to to Start/Stop/Restart Wamp Components. .DESCRIPTION Start/Stop/Restart Wamp Components .PARAMETER action Please Specify a valid connection. .PARAMETER Service Please specify a valid Service .EXAMPLE Invoke-Wamp -action Stop -Service apache .NOTES Additional information about the function or script. #> param( [cmdletbinding()] [Parameter(Mandatory = $true)] [validateset('stop', 'start', 'restart', IgnoreCase = $true)] [string]$action, [validateset('apache', 'mysql', IgnoreCase = $true)] [string]$Service ) #Determine Service if ($service -eq 'apache') { $wampService = 'wampapache*' } elseif ($service -eq 'mysql') { $wampService = 'wampmysql*' } try { #Determine Service Status $Status = (Get-Service $wampService).status #perform Action if ($action -eq 'start') { if ($Status -eq 'Running') { write-host "The Service: '$wampService' is running, taking no action." BREAK } elseif ($Status -eq 'Stopped') { write-host "Starting Service: '$wampService'." Start-Service $wampService -confirm:$false BREAK } else { write-host "Unable to determine Service Status:'$status'" BREAK } } elseif ($action -eq 'stop') { if ($Status -eq 'Running') { write-host "Stopping Service: '$wampService'." Stop-Service $wampService -confirm:$false BREAK } elseif ($Status -eq 'Stopped') { write-host "The Service: '$wampService' is Stopped, taking no action." BREAK } else { write-host "Unable to determine Service Status:'$status'" BREAK } } elseif ($action -eq 'restart') { if ($Status -eq 'Running') { write-host "Restarting Service: '$wampService'." Restart-Service $wampService -confirm:$false BREAK } elseif ($Status -eq 'Stopped') { write-host "The Service: '$wampService' is Stopped, taking no action." BREAK } else { write-host "Unable to determine Service Status:'$status'" BREAK } } } Catch { $ErrorMessage = $_.Exception.Message $FailedItem = $_.Exception.ItemName write-host "Error:" $ErrorMessage $FailedItem BREAK } } Write-Verbose 'Importing from [C:\projects\powerwamp\PowerWamp\classes]' |