Public/Get-SqlRecycleBinDeletedRow.ps1
|
function Get-SqlRecycleBinDeletedRow { <# .SYNOPSIS Returns recently deleted rows for a table (rb.Deleted), as typed PowerShell objects. .DESCRIPTION Wraps rb.Deleted. Rows are projected from JSON back into the table's current column types, so the objects you get back have real properties matching the table's schema (plus ChangeId, ChangedAt, ChangedBy, AppName). .PARAMETER Table Two-part table name, e.g. 'dbo.Orders'. .PARAMETER Top Max rows to return. Default 10. .PARAMETER Since Only include rows deleted at or after this time. .EXAMPLE Get-SqlRecycleBinDeletedRow -ServerInstance 'localhost' -Database 'Sales' -Table 'dbo.Orders' .EXAMPLE Get-SqlRecycleBinDeletedRow -ServerInstance 'localhost' -Database 'Sales' -Table 'dbo.Orders' -Top 50 -Since (Get-Date).AddHours(-1) | Export-Csv .\recovered-orders.csv -NoTypeInformation .LINK https://github.com/qmmughal/sql-recyclebin #> [CmdletBinding()] param( [Parameter(Mandatory)] [string]$ServerInstance, [Parameter(Mandatory)] [string]$Database, [Parameter(Mandatory)] [string]$Table, [int]$Top = 10, [Nullable[datetime]]$Since, [pscredential]$Credential, [switch]$TrustServerCertificate ) $sinceLiteral = if ($Since) { "'{0}'" -f $Since.ToString('yyyy-MM-ddTHH:mm:ss.fff') } else { 'NULL' } $query = "EXEC rb.Deleted @Table = $(ConvertTo-SqlLiteral $Table), @Top = $Top, @Since = $sinceLiteral;" Invoke-SqlRecycleBinCommand -ServerInstance $ServerInstance -Database $Database ` -Query $query -Credential $Credential -TrustServerCertificate:$TrustServerCertificate } |