Skip to content

Instantly share code, notes, and snippets.

@gravejester
Created October 20, 2014 11:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gravejester/4a30b55db3473543a798 to your computer and use it in GitHub Desktop.
Save gravejester/4a30b55db3473543a798 to your computer and use it in GitHub Desktop.
New-DataTable
function New-DataTable {
<#
.SYNOPSIS
Create a new DataTable.
.DESCRIPTION
Create a new DataTable.
.EXAMPLE
`
$myColumns = [ordered] @{
ID = [int32]
Name = [string]
Age = [int]
Date = [DateTime]
}
$myTable = New-DataTable -TableName 'MyTable' -Columns $myColumns
.NOTES
Author: Øyvind Kallstad
Date: 20.10.2014
Version: 1.0
#>
[CmdletBinding()]
[OutputType([System.Data.DataTable])]
param (
[parameter()]
[string] $TableName,
# Use an ordered dictionary to define the table columns.
[parameter()]
[System.Collections.Specialized.OrderedDictionary] $Columns
)
# create new datatable
$newDataTable = New-Object -TypeName 'System.Data.DataTable' -ArgumentList $TableName
Write-Verbose "DataTable created '$TableName'"
# create columns
if ($PSBoundParameters['Columns']) {
$Columns.GetEnumerator() | ForEach-Object {
$columnName = $_.Key
$columnType = $_.Value.ToString()
$dataColumn = New-Object -TypeName 'System.Data.DataColumn' -ArgumentList ($columnName,$columnType)
$newDataTable.Columns.Add($dataColumn)
Write-Verbose "New column created '$columnName'"
}
}
Write-Output @(,$newDataTable)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment