New-WEMPort.ps1
<#
.Synopsis Create a new Port Action object in the WEM Database. .Description Create a new Port Action object in the WEM Database. .Link https://msfreaks.wordpress.com .Parameter IdSite .. .Parameter Name .. .Parameter Description .. .Parameter State .. .Parameter ActionType .. .Parameter PortName .. .Parameter TargetPath .. .Parameter Connection .. .Example .Notes Author: Arjan Mensch #> function New-WEMPort { [CmdletBinding()] param ( [Parameter(Mandatory=$True, ValueFromPipelineByPropertyName=$True, ValueFromPipeline=$True)] [int]$IdSite, [Parameter(Mandatory=$True)] [string]$Name, [Parameter(Mandatory=$False)] [string]$Description = "", [Parameter(Mandatory=$False)][ValidateSet("Enabled","Disabled")] [string]$State = "Enabled", [Parameter(Mandatory=$False)][ValidateSet("Map Client Port")] [string]$ActionType = "Map Client Port", [Parameter(Mandatory=$True)][ValidateSet("COM1:", "COM2:", "COM3:", "COM4:", "COM5:", "COM6:", "COM7:", "COM8:", "COM9:", "LPT1:", "LPT2:", "LPT3:", "LPT4:", "LPT5:", "LPT6:", "LPT7:", "LPT8:", "LPT9:")] [string]$PortName, [Parameter(Mandatory=$True)] [string]$TargetPath, [Parameter(Mandatory=$True)] [System.Data.SqlClient.SqlConnection]$Connection ) process { Write-Verbose "Working with database version $($script:databaseVersion)" # escape possible query breakers $Name = ConvertTo-StringEscaped $Name $Description = ConvertTo-StringEscaped $Description $PortName = ConvertTo-StringEscaped $PortName $TargetPath = ConvertTo-StringEscaped $TargetPath # name is unique if it's not yet used in the same Action Type in the site $SQLQuery = "SELECT COUNT(*) AS ObjectCount FROM VUEMPorts WHERE Name LIKE '$($Name)' AND IdSite = $($IdSite)" $result = Invoke-SQL -Connection $Connection -Query $SQLQuery if ($result.Tables.Rows.ObjectCount) { # name must be unique Write-Error "There's already a Port object named '$($Name)' in the Configuration" Break } Write-Verbose "Name is unique: Continue" # build the query to update the action $SQLQuery = "INSERT INTO VUEMPorts (IdSite,Name,Description,State,ActionType,PortName,TargetPath,RevisionId,Reserved01) VALUES ($($IdSite),'$($Name)','$($Description)',$($tableVUEMState[$State]),$($tableVUEMPortActionType[$ActionType]),'$($PortName)','$($TargetPath)',1,NULL)" $null = Invoke-SQL -Connection $Connection -Query $SQLQuery # grab the new action $SQLQuery = "SELECT * FROM VUEMPorts WHERE IdSite = $($IdSite) AND Name = '$($Name)'" $result = Invoke-SQL -Connection $Connection -Query $SQLQuery # Updating the ChangeLog $IdObject = $result.Tables.Rows.IdPort New-ChangesLogEntry -Connection $Connection -IdSite $IdSite -IdElement $IdObject -ChangeType "Create" -ObjectName $Name -ObjectType "Actions\Port" -NewValue "N/A" -ChangeDescription $null -Reserved01 $null # Return the new object return New-VUEMPortObject -DataRow $result.Tables.Rows #Get-WEMPort -Connection $Connection -IdAction $IdObject } } |