{"id":277,"date":"2023-07-31T20:20:00","date_gmt":"2023-07-31T20:20:00","guid":{"rendered":"https:\/\/datacrazyworld.com\/?p=277"},"modified":"2023-07-31T19:17:11","modified_gmt":"2023-07-31T19:17:11","slug":"como-documentar-tu-etl-del-ssis-con-powershell","status":"publish","type":"post","link":"https:\/\/datacrazyworld.com\/index.php\/2023\/07\/31\/como-documentar-tu-etl-del-ssis-con-powershell\/","title":{"rendered":"C\u00f3mo documentar tu ETL del SSIS con PowerShell"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Hace unas semanas me enfrentaba a tener que revisar un ETL hecho con e<strong>l SQL Server Integration Services<\/strong> (<em>SSIS<\/em>) que no s\u00f3lo yo lo estaba desarrollando. El objetivo que ten\u00eda era poder preparar los or\u00edgenes de datos de dicho ETL. Necesitaba conocer qu\u00e9 bases de datos, tablas, campos, etc. necesitaba para , por ejemplo, poder establecer permisos o comprobar que se recog\u00edan todos los datos de donde se ten\u00edan que recoger.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Todos los que conozc\u00e1is el SSIS sab\u00e9is que un proyecto importante puede tener cientos de cajitas con las transformaciones (si no son miles), y no se vosotros, pero no quer\u00eda perder el tiempo pinchando en cada una de ellas. Teniendo en cuenta que probablemente sea una tarea que tenga que hacer habitualmente, decid\u00ed pensar e indagar si habr\u00eda otra forma. Y por suerte, la encontr\u00e9.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los archivos \u00ab.dtsx\u00bb que conforman un proyecto de SSIS son archivos XML que contienen toda la informaci\u00f3n que conforma ese paquete, por lo que s\u00f3lo ten\u00eda que descubrir, c\u00f3mo navegar por ese xml.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cosas importantes a tener en cuenta: <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Como mi objetivo es mirar la parte de BBDD, se fija s\u00f3lo en los <em>SQLCOMMANDs<\/em>. <\/li>\n\n\n\n<li>El SSIS tiene muchos tipos de objetos, pero este c\u00f3digo se fija s\u00f3lo en: <em>OLEDB Source<\/em>, <em>Lookups <\/em>y <em>OLEDB Command<\/em>.<\/li>\n\n\n\n<li>Crea un documento WORD, con encabezados para que est\u00e9 organizado y sea m\u00e1s sencillo de leer.<\/li>\n\n\n\n<li>Usa <strong>PowerShell<\/strong><\/li>\n\n\n\n<li>El directorio destino, debe existir.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez definas el origen y el destino, s\u00f3lo tendr\u00e1s que lanzar este script en el ISE de PowerShell.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#Preparing the info about .dtsx\n$path = \"C:\\Projects\\BI\\SSIS Test\"\n$extension = \".dtsx\"\n\n#Preparing word generation\n$docfile = \"C:\\test\\DocumentacionDTSX.docx\"\n\n\n# Create a new instance\/object of MS Word\n$MSWord = New-Object -ComObject Word.Application\n\n# Make MS Word visible\n$MSWord.Visible = $True\n\n# Add a new document\n$mydoc = $MSWord.Documents.Add()\n\n\n$Section = $mydoc.Sections.Item(1)\n$Header = $Section.Headers.Item(1)\n$Footer = $Section.Footers.Item(1)\n$Footer.PageNumbers.Add()\n\n# Create a reference to the current document so we can begin adding text\n$myText = $MSWord.Selection\n$myText.Style = &#91;Microsoft.Office.Interop.Word.WdBuiltinStyle]::wdStyleHeading1\n$myText.TypeText(\"Documentation Generation Info\")\n$myText.TypeParagraph()\n\n$myText = $MSWord.Selection\n$date = Get-date -Format \"dddd dd\/MM\/yyyy HH:mm K\"\n$myText.Font.Bold = 1\n$myText.TypeText(\"Generation date: \")\n$myText.Font.Bold = 0\n$myText.TypeText($date)\n$myText.TypeParagraph()\n\n#I'm going to loop through all the dtsx to generate the documentation\nGet-ChildItem $path |\nForeach-Object {\n   If ($_.Extension -eq $extension)\n   {\n         # read .dtsx into XML variable\n        &#91;xml] $myxml = Get-Content $_.FullName\n\n        # Create Title 1\n        $myText = $MSWord.Selection\n        $myText.Style = &#91;Microsoft.Office.Interop.Word.WdBuiltinStyle]::wdStyleHeading1\n        $myText.TypeText($_.Name)\n        $myText.TypeParagraph()\n\n        # Objeto OLEDB Source\n        $HasAlreadyPutHeading2 = $false\n        \n        $myxml | Select-XML -XPath \"\/\/component&#91;@componentClassID='Microsoft.OLEDBSource']\" | ForEach-Object {\n            # Creates if not exists, Title 2\n            if ($HasAlreadyPutHeading2 -eq $false)\n            {\n                $myText = $MSWord.Selection\n                $myText.Style = &#91;Microsoft.Office.Interop.Word.WdBuiltinStyle]::wdStyleHeading2\n                $myText.TypeText(\"Microsoft.OLEDBSource\")\n                $myText.TypeParagraph()     \n                $HasAlreadyPutHeading2 = $true    \n            }\n\n            # Creates if not exists, Title 2\n            $myText = $MSWord.Selection\n            $myText.Style = &#91;Microsoft.Office.Interop.Word.WdBuiltinStyle]::wdStyleHeading3\n            $myText.TypeText($_.Node.Name)\n            $myText.TypeParagraph()            \n\n            #I pick up the children\n            &#91;xml] $childs = $_.Node.OuterXml \n\n            \n            $myText = $MSWord.Selection            \n\n            $childs| Select-XML -XPath \"\/\/connection&#91;@connectionManagerRefId]\"  | ForEach-Object {\n                # Register the name of the connection\n                $myText.Style = &#91;Microsoft.Office.Interop.Word.WdBuiltinStyle]::wdStyleListBullet\n                $myText.Font.Bold = 1\n                $myText.TypeText('Conexi\u00f3n: ')\n                $myText.Font.Bold = 0\n                $myText.TypeText($_.Node.connectionManagerRefId)\n                $myText.TypeParagraph()                     \n            }\n\n            $childs| Select-XML -XPath \"\/\/property&#91;@name='SqlCommand']\"  | ForEach-Object {\n                # Register SQL Command\n                $myText.Style = &#91;Microsoft.Office.Interop.Word.WdBuiltinStyle]::wdStyleListBullet\n                $myText.Font.Bold = 1\n                $myText.TypeText('Comando SQL: ')\n                $myText.TypeParagraph()             \n                $myText.Font.Bold = 0\n                $myText.Style = &#91;Microsoft.Office.Interop.Word.WdBuiltinStyle]::wdStylePlainText\n                $myText.TypeText($_.Node.InnerText)\n                $myText.TypeParagraph()                                 \n            }\n\n        }\n\n        # Objeto Lookup\n        $HasAlreadyPutHeading2 = $false\n\n        $myxml | Select-XML -XPath \"\/\/component&#91;@componentClassID='Microsoft.Lookup']\" | ForEach-Object {\n            # Creates if not exists, Title 2\n            if ($HasAlreadyPutHeading2 -eq $false)\n            {\n                $myText = $MSWord.Selection\n                $myText.Style = &#91;Microsoft.Office.Interop.Word.WdBuiltinStyle]::wdStyleHeading2\n                $myText.TypeText(\"Microsoft.Lookup\")\n                $myText.TypeParagraph()     \n                $HasAlreadyPutHeading2 = $true    \n            }\n\n            # Creates if not exists, Title 3\n            $myText = $MSWord.Selection\n            $myText.Style = &#91;Microsoft.Office.Interop.Word.WdBuiltinStyle]::wdStyleHeading3\n            $myText.TypeText($_.Node.Name)\n            $myText.TypeParagraph()            \n\n            #I pick up the children\n            &#91;xml] $childs = $_.Node.OuterXml \n            \n            $childs| Select-XML -XPath \"\/\/connection&#91;@connectionManagerRefId]\"  | ForEach-Object {\n                # Register the name of the connection\n                $myText.Style = &#91;Microsoft.Office.Interop.Word.WdBuiltinStyle]::wdStyleListBullet\n                $myText.Font.Bold = 1\n                $myText.TypeText('Conexi\u00f3n: ')\n                $myText.Font.Bold = 0\n                $myText.TypeText($_.Node.connectionManagerRefId)\n                $myText.TypeParagraph()                     \n            }\n\n            $childs| Select-XML -XPath \"\/\/property&#91;@name='SqlCommand']\"  | ForEach-Object {\n                # Register SQL Command\n                $myText.Style = &#91;Microsoft.Office.Interop.Word.WdBuiltinStyle]::wdStyleListBullet\n                $myText.Font.Bold = 1\n                $myText.TypeText('Comando SQL: ')\n                $myText.TypeParagraph()             \n                $myText.Font.Bold = 0\n                $myText.Style = &#91;Microsoft.Office.Interop.Word.WdBuiltinStyle]::wdStylePlainText\n                $myText.TypeText($_.Node.InnerText)\n                $myText.TypeParagraph()                                 \n            }\n            \n        }\n\n        # Objeto Comando OLEDB\n        $HasAlreadyPutHeading2 = $false\n\n        $myxml | Select-XML -XPath \"\/\/component&#91;@componentClassID='Microsoft.OLEDBCommand']\" | ForEach-Object {\n            # Creates if not exists, Title 2\n            if ($HasAlreadyPutHeading2 -eq $false)\n            {\n                $myText = $MSWord.Selection\n                $myText.Style = &#91;Microsoft.Office.Interop.Word.WdBuiltinStyle]::wdStyleHeading2\n                $myText.TypeText(\"Microsoft.OLEDBCommand\")\n                $myText.TypeParagraph()     \n                $HasAlreadyPutHeading2 = $true    \n            }\n\n            # Creates if not exists, Title 3\n            $myText = $MSWord.Selection\n            $myText.Style = &#91;Microsoft.Office.Interop.Word.WdBuiltinStyle]::wdStyleHeading3\n            $myText.TypeText($_.Node.Name)\n            $myText.TypeParagraph()            \n\n            #I pick up the children\n            &#91;xml] $childs = $_.Node.OuterXml \n            \n            $childs| Select-XML -XPath \"\/\/connection&#91;@connectionManagerRefId]\"  | ForEach-Object {\n                # Register the name of the connection\n                $myText.Style = &#91;Microsoft.Office.Interop.Word.WdBuiltinStyle]::wdStyleListBullet\n                $myText.Font.Bold = 1\n                $myText.TypeText('Conexi\u00f3n: ')\n                $myText.Font.Bold = 0\n                $myText.TypeText($_.Node.connectionManagerRefId)\n                $myText.TypeParagraph()                     \n            }\n\n            $childs| Select-XML -XPath \"\/\/property&#91;@name='SqlCommand']\"  | ForEach-Object {\n                # Register SQL Command\n                $myText.Style = &#91;Microsoft.Office.Interop.Word.WdBuiltinStyle]::wdStyleListBullet\n                $myText.Font.Bold = 1\n                $myText.TypeText('Comando SQL: ')\n                $myText.TypeParagraph()             \n                $myText.Font.Bold = 0\n                $myText.Style = &#91;Microsoft.Office.Interop.Word.WdBuiltinStyle]::wdStylePlainText\n                $myText.TypeText($_.Node.InnerText)\n                $myText.TypeParagraph()                                 \n            }\n            \n        }\n   }\n}\n\n\n$saveFormat = &#91;Microsoft.Office.Interop.Word.WdSaveFormat]::wdFormatDocumentDefault\n$mydoc.SaveAs(&#91;ref]&#91;system.object]$docfile, &#91;ref]$saveFormat)\n$mydoc.Close()\n$MSWord.Quit()\n\n# Clean up Com object\n$null =\n&#91;System.Runtime.InteropServices.Marshal]::ReleaseComObject(&#91;System.__ComObject]$MSWord)\nRemove-Variable MSWord<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u00a1Espero que os sea tan \u00fatil como a mi!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aqu\u00ed os traigo un peque\u00f1o script en PowerShell que te permitir\u00e1 documentar los SQLCommand de tu  DTSX.<\/p>\n","protected":false},"author":2,"featured_media":289,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[11,8,30],"tags":[29,14,27,20],"class_list":["post-277","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-powershell","category-sqlserver","category-ssis","tag-etl","tag-powershell","tag-ssis","tag-tsqlt"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\"Aqu\u00ed os traigo un peque\u00f1o script en PowerShell que te permitir\u00e1 documentar los SQLCommand de tu DTSX.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Cristina Tarabini-Castellani Ciordia\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/datacrazyworld.com\/index.php\/2023\/07\/31\/como-documentar-tu-etl-del-ssis-con-powershell\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.9\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@DataCrazyWorld\" \/>\n\t\t<meta name=\"twitter:title\" content=\"C\u00f3mo documentar tu ETL del SSIS con PowerShell - \ud83d\ude0d\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Aqu\u00ed os traigo un peque\u00f1o script en PowerShell que te permitir\u00e1 documentar los SQLCommand de tu DTSX.\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@DataCrazyWorld\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/datacrazyworld.com\/wp-content\/uploads\/2022\/12\/Color_Small.png\" \/>\n\t\t<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t\t<meta name=\"twitter:data1\" content=\"Cristina Tarabini-Castellani Ciordia\" \/>\n\t\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura estimado\" \/>\n\t\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/datacrazyworld.com\\\/index.php\\\/2023\\\/07\\\/31\\\/como-documentar-tu-etl-del-ssis-con-powershell\\\/#blogposting\",\"name\":\"C\\u00f3mo documentar tu ETL del SSIS con PowerShell - \\ud83d\\ude0d\",\"headline\":\"C\\u00f3mo documentar tu ETL del SSIS con PowerShell\",\"author\":{\"@id\":\"https:\\\/\\\/datacrazyworld.com\\\/index.php\\\/author\\\/tarabiquetevi\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/datacrazyworld.com\\\/#person\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/datacrazyworld.com\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/SSISPowerShell.png\",\"width\":1200,\"height\":675},\"datePublished\":\"2023-07-31T20:20:00+00:00\",\"dateModified\":\"2023-07-31T19:17:11+00:00\",\"inLanguage\":\"es-ES\",\"commentCount\":1,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/datacrazyworld.com\\\/index.php\\\/2023\\\/07\\\/31\\\/como-documentar-tu-etl-del-ssis-con-powershell\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/datacrazyworld.com\\\/index.php\\\/2023\\\/07\\\/31\\\/como-documentar-tu-etl-del-ssis-con-powershell\\\/#webpage\"},\"articleSection\":\"PowerShell, SQL Server, SSIS, ETL, powershell, SSIS, tsqlt\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/datacrazyworld.com\\\/index.php\\\/2023\\\/07\\\/31\\\/como-documentar-tu-etl-del-ssis-con-powershell\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/datacrazyworld.com#listItem\",\"position\":1,\"name\":\"Inicio\",\"item\":\"https:\\\/\\\/datacrazyworld.com\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/datacrazyworld.com\\\/index.php\\\/category\\\/sqlserver\\\/#listItem\",\"name\":\"SQL Server\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/datacrazyworld.com\\\/index.php\\\/category\\\/sqlserver\\\/#listItem\",\"position\":2,\"name\":\"SQL Server\",\"item\":\"https:\\\/\\\/datacrazyworld.com\\\/index.php\\\/category\\\/sqlserver\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/datacrazyworld.com\\\/index.php\\\/category\\\/sqlserver\\\/ssis\\\/#listItem\",\"name\":\"SSIS\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/datacrazyworld.com#listItem\",\"name\":\"Inicio\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/datacrazyworld.com\\\/index.php\\\/category\\\/sqlserver\\\/ssis\\\/#listItem\",\"position\":3,\"name\":\"SSIS\",\"item\":\"https:\\\/\\\/datacrazyworld.com\\\/index.php\\\/category\\\/sqlserver\\\/ssis\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/datacrazyworld.com\\\/index.php\\\/2023\\\/07\\\/31\\\/como-documentar-tu-etl-del-ssis-con-powershell\\\/#listItem\",\"name\":\"C\\u00f3mo documentar tu ETL del SSIS con PowerShell\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/datacrazyworld.com\\\/index.php\\\/category\\\/sqlserver\\\/#listItem\",\"name\":\"SQL Server\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/datacrazyworld.com\\\/index.php\\\/2023\\\/07\\\/31\\\/como-documentar-tu-etl-del-ssis-con-powershell\\\/#listItem\",\"position\":4,\"name\":\"C\\u00f3mo documentar tu ETL del SSIS con PowerShell\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/datacrazyworld.com\\\/index.php\\\/category\\\/sqlserver\\\/ssis\\\/#listItem\",\"name\":\"SSIS\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/datacrazyworld.com\\\/#person\",\"name\":\"Cristina Tarabini-Castellani Ciordia\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/datacrazyworld.com\\\/index.php\\\/2023\\\/07\\\/31\\\/como-documentar-tu-etl-del-ssis-con-powershell\\\/#personImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/020df7a271c91fd52178caf747ffe0997d2f1113e00f58e77a2878622e27453f?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Cristina Tarabini-Castellani Ciordia\"},\"sameAs\":[\"https:\\\/\\\/twitter.com\\\/DataCrazyWorld\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/cristina-tarabini-castellani\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/datacrazyworld.com\\\/index.php\\\/author\\\/tarabiquetevi\\\/#author\",\"url\":\"https:\\\/\\\/datacrazyworld.com\\\/index.php\\\/author\\\/tarabiquetevi\\\/\",\"name\":\"Cristina Tarabini-Castellani Ciordia\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/datacrazyworld.com\\\/index.php\\\/2023\\\/07\\\/31\\\/como-documentar-tu-etl-del-ssis-con-powershell\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/020df7a271c91fd52178caf747ffe0997d2f1113e00f58e77a2878622e27453f?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Cristina Tarabini-Castellani Ciordia\"},\"sameAs\":[\"https:\\\/\\\/twitter.com\\\/DataCrazyWorld\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/cristina-tarabini-castellani\\\/\"]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/datacrazyworld.com\\\/index.php\\\/2023\\\/07\\\/31\\\/como-documentar-tu-etl-del-ssis-con-powershell\\\/#webpage\",\"url\":\"https:\\\/\\\/datacrazyworld.com\\\/index.php\\\/2023\\\/07\\\/31\\\/como-documentar-tu-etl-del-ssis-con-powershell\\\/\",\"name\":\"C\\u00f3mo documentar tu ETL del SSIS con PowerShell - \\ud83d\\ude0d\",\"description\":\"Aqu\\u00ed os traigo un peque\\u00f1o script en PowerShell que te permitir\\u00e1 documentar los SQLCommand de tu DTSX.\",\"inLanguage\":\"es-ES\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/datacrazyworld.com\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/datacrazyworld.com\\\/index.php\\\/2023\\\/07\\\/31\\\/como-documentar-tu-etl-del-ssis-con-powershell\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/datacrazyworld.com\\\/index.php\\\/author\\\/tarabiquetevi\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/datacrazyworld.com\\\/index.php\\\/author\\\/tarabiquetevi\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/datacrazyworld.com\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/SSISPowerShell.png\",\"@id\":\"https:\\\/\\\/datacrazyworld.com\\\/index.php\\\/2023\\\/07\\\/31\\\/como-documentar-tu-etl-del-ssis-con-powershell\\\/#mainImage\",\"width\":1200,\"height\":675},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/datacrazyworld.com\\\/index.php\\\/2023\\\/07\\\/31\\\/como-documentar-tu-etl-del-ssis-con-powershell\\\/#mainImage\"},\"datePublished\":\"2023-07-31T20:20:00+00:00\",\"dateModified\":\"2023-07-31T19:17:11+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/datacrazyworld.com\\\/#website\",\"url\":\"https:\\\/\\\/datacrazyworld.com\\\/\",\"name\":\"DataCrazyWorld\",\"description\":\"SQL Server, PowerShell, Power BI, Power Platform,... Los datos, ese mundo tan interesante, variado, divertido y ... \\u00a1Loco!\",\"inLanguage\":\"es-ES\",\"publisher\":{\"@id\":\"https:\\\/\\\/datacrazyworld.com\\\/#person\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"C\u00f3mo documentar tu ETL del SSIS con PowerShell - \ud83d\ude0d","description":"Aqu\u00ed os traigo un peque\u00f1o script en PowerShell que te permitir\u00e1 documentar los SQLCommand de tu DTSX.","canonical_url":"https:\/\/datacrazyworld.com\/index.php\/2023\/07\/31\/como-documentar-tu-etl-del-ssis-con-powershell\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/datacrazyworld.com\/index.php\/2023\/07\/31\/como-documentar-tu-etl-del-ssis-con-powershell\/#blogposting","name":"C\u00f3mo documentar tu ETL del SSIS con PowerShell - \ud83d\ude0d","headline":"C\u00f3mo documentar tu ETL del SSIS con PowerShell","author":{"@id":"https:\/\/datacrazyworld.com\/index.php\/author\/tarabiquetevi\/#author"},"publisher":{"@id":"https:\/\/datacrazyworld.com\/#person"},"image":{"@type":"ImageObject","url":"https:\/\/datacrazyworld.com\/wp-content\/uploads\/2023\/07\/SSISPowerShell.png","width":1200,"height":675},"datePublished":"2023-07-31T20:20:00+00:00","dateModified":"2023-07-31T19:17:11+00:00","inLanguage":"es-ES","commentCount":1,"mainEntityOfPage":{"@id":"https:\/\/datacrazyworld.com\/index.php\/2023\/07\/31\/como-documentar-tu-etl-del-ssis-con-powershell\/#webpage"},"isPartOf":{"@id":"https:\/\/datacrazyworld.com\/index.php\/2023\/07\/31\/como-documentar-tu-etl-del-ssis-con-powershell\/#webpage"},"articleSection":"PowerShell, SQL Server, SSIS, ETL, powershell, SSIS, tsqlt"},{"@type":"BreadcrumbList","@id":"https:\/\/datacrazyworld.com\/index.php\/2023\/07\/31\/como-documentar-tu-etl-del-ssis-con-powershell\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/datacrazyworld.com#listItem","position":1,"name":"Inicio","item":"https:\/\/datacrazyworld.com","nextItem":{"@type":"ListItem","@id":"https:\/\/datacrazyworld.com\/index.php\/category\/sqlserver\/#listItem","name":"SQL Server"}},{"@type":"ListItem","@id":"https:\/\/datacrazyworld.com\/index.php\/category\/sqlserver\/#listItem","position":2,"name":"SQL Server","item":"https:\/\/datacrazyworld.com\/index.php\/category\/sqlserver\/","nextItem":{"@type":"ListItem","@id":"https:\/\/datacrazyworld.com\/index.php\/category\/sqlserver\/ssis\/#listItem","name":"SSIS"},"previousItem":{"@type":"ListItem","@id":"https:\/\/datacrazyworld.com#listItem","name":"Inicio"}},{"@type":"ListItem","@id":"https:\/\/datacrazyworld.com\/index.php\/category\/sqlserver\/ssis\/#listItem","position":3,"name":"SSIS","item":"https:\/\/datacrazyworld.com\/index.php\/category\/sqlserver\/ssis\/","nextItem":{"@type":"ListItem","@id":"https:\/\/datacrazyworld.com\/index.php\/2023\/07\/31\/como-documentar-tu-etl-del-ssis-con-powershell\/#listItem","name":"C\u00f3mo documentar tu ETL del SSIS con PowerShell"},"previousItem":{"@type":"ListItem","@id":"https:\/\/datacrazyworld.com\/index.php\/category\/sqlserver\/#listItem","name":"SQL Server"}},{"@type":"ListItem","@id":"https:\/\/datacrazyworld.com\/index.php\/2023\/07\/31\/como-documentar-tu-etl-del-ssis-con-powershell\/#listItem","position":4,"name":"C\u00f3mo documentar tu ETL del SSIS con PowerShell","previousItem":{"@type":"ListItem","@id":"https:\/\/datacrazyworld.com\/index.php\/category\/sqlserver\/ssis\/#listItem","name":"SSIS"}}]},{"@type":"Person","@id":"https:\/\/datacrazyworld.com\/#person","name":"Cristina Tarabini-Castellani Ciordia","image":{"@type":"ImageObject","@id":"https:\/\/datacrazyworld.com\/index.php\/2023\/07\/31\/como-documentar-tu-etl-del-ssis-con-powershell\/#personImage","url":"https:\/\/secure.gravatar.com\/avatar\/020df7a271c91fd52178caf747ffe0997d2f1113e00f58e77a2878622e27453f?s=96&d=mm&r=g","width":96,"height":96,"caption":"Cristina Tarabini-Castellani Ciordia"},"sameAs":["https:\/\/twitter.com\/DataCrazyWorld","https:\/\/www.linkedin.com\/in\/cristina-tarabini-castellani\/"]},{"@type":"Person","@id":"https:\/\/datacrazyworld.com\/index.php\/author\/tarabiquetevi\/#author","url":"https:\/\/datacrazyworld.com\/index.php\/author\/tarabiquetevi\/","name":"Cristina Tarabini-Castellani Ciordia","image":{"@type":"ImageObject","@id":"https:\/\/datacrazyworld.com\/index.php\/2023\/07\/31\/como-documentar-tu-etl-del-ssis-con-powershell\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/020df7a271c91fd52178caf747ffe0997d2f1113e00f58e77a2878622e27453f?s=96&d=mm&r=g","width":96,"height":96,"caption":"Cristina Tarabini-Castellani Ciordia"},"sameAs":["https:\/\/twitter.com\/DataCrazyWorld","https:\/\/www.linkedin.com\/in\/cristina-tarabini-castellani\/"]},{"@type":"WebPage","@id":"https:\/\/datacrazyworld.com\/index.php\/2023\/07\/31\/como-documentar-tu-etl-del-ssis-con-powershell\/#webpage","url":"https:\/\/datacrazyworld.com\/index.php\/2023\/07\/31\/como-documentar-tu-etl-del-ssis-con-powershell\/","name":"C\u00f3mo documentar tu ETL del SSIS con PowerShell - \ud83d\ude0d","description":"Aqu\u00ed os traigo un peque\u00f1o script en PowerShell que te permitir\u00e1 documentar los SQLCommand de tu DTSX.","inLanguage":"es-ES","isPartOf":{"@id":"https:\/\/datacrazyworld.com\/#website"},"breadcrumb":{"@id":"https:\/\/datacrazyworld.com\/index.php\/2023\/07\/31\/como-documentar-tu-etl-del-ssis-con-powershell\/#breadcrumblist"},"author":{"@id":"https:\/\/datacrazyworld.com\/index.php\/author\/tarabiquetevi\/#author"},"creator":{"@id":"https:\/\/datacrazyworld.com\/index.php\/author\/tarabiquetevi\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/datacrazyworld.com\/wp-content\/uploads\/2023\/07\/SSISPowerShell.png","@id":"https:\/\/datacrazyworld.com\/index.php\/2023\/07\/31\/como-documentar-tu-etl-del-ssis-con-powershell\/#mainImage","width":1200,"height":675},"primaryImageOfPage":{"@id":"https:\/\/datacrazyworld.com\/index.php\/2023\/07\/31\/como-documentar-tu-etl-del-ssis-con-powershell\/#mainImage"},"datePublished":"2023-07-31T20:20:00+00:00","dateModified":"2023-07-31T19:17:11+00:00"},{"@type":"WebSite","@id":"https:\/\/datacrazyworld.com\/#website","url":"https:\/\/datacrazyworld.com\/","name":"DataCrazyWorld","description":"SQL Server, PowerShell, Power BI, Power Platform,... Los datos, ese mundo tan interesante, variado, divertido y ... \u00a1Loco!","inLanguage":"es-ES","publisher":{"@id":"https:\/\/datacrazyworld.com\/#person"}}]},"twitter:card":"summary_large_image","twitter:site":"@DataCrazyWorld","twitter:title":"C\u00f3mo documentar tu ETL del SSIS con PowerShell - \ud83d\ude0d","twitter:description":"Aqu\u00ed os traigo un peque\u00f1o script en PowerShell que te permitir\u00e1 documentar los SQLCommand de tu DTSX.","twitter:creator":"@DataCrazyWorld","twitter:image":"https:\/\/datacrazyworld.com\/wp-content\/uploads\/2022\/12\/Color_Small.png","twitter:label1":"Escrito por","twitter:data1":"Cristina Tarabini-Castellani Ciordia","twitter:label2":"Tiempo de lectura estimado","twitter:data2":"5 minutos"},"aioseo_meta_data":{"post_id":"277","title":"#post_title #separator_sa \ud83d\ude0d","description":null,"keywords":[],"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":[],"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"BlogPosting","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2023-07-31 16:20:50","updated":"2025-06-04 03:39:31","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/datacrazyworld.com\" title=\"Inicio\">Inicio<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/datacrazyworld.com\/index.php\/category\/sqlserver\/\" title=\"SQL Server\">SQL Server<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/datacrazyworld.com\/index.php\/category\/sqlserver\/ssis\/\" title=\"SSIS\">SSIS<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tC\u00f3mo documentar tu ETL del SSIS con PowerShell\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Inicio","link":"https:\/\/datacrazyworld.com"},{"label":"SQL Server","link":"https:\/\/datacrazyworld.com\/index.php\/category\/sqlserver\/"},{"label":"SSIS","link":"https:\/\/datacrazyworld.com\/index.php\/category\/sqlserver\/ssis\/"},{"label":"C\u00f3mo documentar tu ETL del SSIS con PowerShell","link":"https:\/\/datacrazyworld.com\/index.php\/2023\/07\/31\/como-documentar-tu-etl-del-ssis-con-powershell\/"}],"_links":{"self":[{"href":"https:\/\/datacrazyworld.com\/index.php\/wp-json\/wp\/v2\/posts\/277","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/datacrazyworld.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/datacrazyworld.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/datacrazyworld.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/datacrazyworld.com\/index.php\/wp-json\/wp\/v2\/comments?post=277"}],"version-history":[{"count":4,"href":"https:\/\/datacrazyworld.com\/index.php\/wp-json\/wp\/v2\/posts\/277\/revisions"}],"predecessor-version":[{"id":290,"href":"https:\/\/datacrazyworld.com\/index.php\/wp-json\/wp\/v2\/posts\/277\/revisions\/290"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/datacrazyworld.com\/index.php\/wp-json\/wp\/v2\/media\/289"}],"wp:attachment":[{"href":"https:\/\/datacrazyworld.com\/index.php\/wp-json\/wp\/v2\/media?parent=277"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/datacrazyworld.com\/index.php\/wp-json\/wp\/v2\/categories?post=277"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/datacrazyworld.com\/index.php\/wp-json\/wp\/v2\/tags?post=277"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}