# --------------------------------------------------------------------------- ### # --------------------------------------------------------------------------- param($Object,$ItemTag="ITEM", $ChildItems="*", $Attributes=$Null) $header = @" "@ $footer = @" "@ ####################### function Get-SqlType { param($definition) $type = ([regex]'System\.([^ ]*) ').matches($definition) | %{$_.Groups[1].Value} switch ($type) { "Int64" {"bigint"} "Byte[]" {"varbinary"} "Boolean" {"bit"} "Decimal" {"decimal"} "DateTime" {"datetime"} "Double" {"float"} "Guid" {"uniqueidentifier"} "Int32" {"int"} "Single" {"real"} "Int16" {"smallint"} "Byte" {"tinyint"} default {"varchar(255)"} } }# Get-SqlType ####################### $xsd = $header $xsd += "`n `n" $xsd += " `n" $xsd += " `n" $seen = @() foreach ($prop in $Object | Get-Member -Type *Property $childItems) { $Name = $prop.Name if (!($seen -contains $Name)) { $seen += $Name $xsd += " `n" } } $xsd += " `n" if ($Attributes) { foreach ($attr in $Object | Get-Member -type *Property $attributes) { $Name = $attr.Name if (!($seen -contains $Name)) { $seen += $Name $xsd += " `n" } } } $xsd += " `n" $xsd += " `n" $xsd += $footer $xsd