Cmdlets/Invoke-SqlUpdate.ps1
<#
.Synopsis Executes a query and returns number of record affected. .Description Executes a query against the targeted connection and returns the the number of records affected. .Parameter Query SQL statement to run. .Parameter Parameters Parameters required by the query. Key matches the parameter name, Value is the value of the parameter. .Parameter CommandTimeout The timeout, in seconds, for this SQL statement, defaults to the command timeout for the SqlConnection. .Parameter ConnectionName User defined name for connection. .Example Invoke-SqlUpdate -Query "TRUNCATE TABLE employees" .Example Invoke-SqlUpdate -Query "UPDATE employees SET salary = @val WHERE manager = @managerId" -Parameters @{val = 999999; managerId = 549} #> Function Invoke-SqlUpdate { [CmdletBinding(DefaultParameterSetName="default")] Param([Parameter(Mandatory, ParameterSetName="default", Position=0)][AllowEmptyString()][string[]]$Query , [Parameter(ParameterSetName="default",Position=1)][hashtable]$Parameters = @{} , [Parameter(ParameterSetName="default")][int]$CommandTimeout = -1 , [Parameter(Mandatory,ParameterSetName="cmd")][System.Data.IDbCommand]$Command , [ValidateNotNullOrEmpty()][Alias("cn")][string]$ConnectionName = "default") If(TestConnectionName -ConnectionName $ConnectionName) { If($PSCmdlet.ParameterSetName -eq "default") { [string]$Query = $Query -join [System.Environment]::NewLine If(-not $Parameters) { $Parameters = @{} } $cmd = $Script:Connections.$ConnectionName.GetCommand($Query, $CommandTimeout, $Parameters) Try { Write-Output $cmd.ExecuteNonQuery() } Finally { $cmd.Dispose() } } Else { $Script:Connections.$ConnectionName.AttachTransaction($Command) Write-Output $Command.ExecuteNonQuery() } } } Set-Alias -Name isu -Value Invoke-SqlUpdate Export-ModuleMember -Function Invoke-SqlUpdate -Alias isu |