<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    
    <title>El blog de Fausto</title>
    <atom:link href="https://fausto.app/notes/feed/rss" rel="self" type="application/rss+xml" />
    <link>http://example.com/</link>
    <description>Innovamos siempre, compartimos también!</description>
    <language>es-ar</language>
    <pubDate>lun., 20 abr. 2026 22:31:38 -0500</pubDate>
    <lastBuildDate>lun., 20 abr. 2026 22:31:38 -0500</lastBuildDate>

    
    
      <item>
        <title>Instalar Go en Alpine</title>
        <link>https://fausto.app/notes/instalar-go-en-alpine</link>
        <guid>https://fausto.app/notes/instalar-go-en-alpine</guid>
        <pubDate>mié., 27 ene. 2021 14:57:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola! Veremos c&amp;#xF3;mo instalar Go en Alpine.&lt;/p&gt;


&lt;p&gt;Una necesidad si est&amp;#xE1;s desarrollando en Go. Usualmente si usas Alpine te encontrar&amp;#xE1;s con una sola versi&amp;#xF3;n de go. Con este script podr&amp;#xE1;s elegir la versi&amp;#xF3;n que deseas instalar.&lt;/p&gt;


&lt;div data-embed=&quot;true&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;https://github.githubassets.com/assets/gist-embed-24bb8e840bfabd0d17bac31daf27f75b.css&quot;&gt;
&lt;div id=&quot;gist107604573&quot; class=&quot;gist&quot;&gt; &lt;div class=&quot;gist-file&quot;&gt;   &lt;div class=&quot;gist-data&quot;&gt;     &lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;&lt;div id=&quot;file-alpine-go-sh&quot; class=&quot;file my-2&quot;&gt; &lt;div itemprop=&quot;text&quot; class=&quot;Box-body p-0 blob-wrapper data type-shell  &quot;&gt;   &lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot; data-paste-markdown-skip=&quot;&quot;&gt;   &lt;tbody&gt;&lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L1&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC1&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L2&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC2&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt;source https://github.com/docker-library/golang/blob/ee2d52a7ad3e077af02313cd4cd87fd39837412c/1.15/alpine3.12/Dockerfile&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L3&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC3&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;export&lt;/span&gt; PATH=/usr/local/go/bin:&lt;span class=&quot;pl-smi&quot;&gt;$PATH&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L4&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC4&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;apk add gnupg go bash&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L5&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC5&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;apk add --no-cache &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L6&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;6&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC6&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;		ca-certificates&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L7&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;7&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC7&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; set up nsswitch.conf for Go&amp;apos;s &amp;quot;netgo&amp;quot; implementation&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L8&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;8&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC8&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; - https://github.com/golang/go/blob/go1.9.1/src/net/conf.go#L194-L275&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L9&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;9&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC9&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; - docker run --rm debian:stretch grep &amp;apos;^hosts:&amp;apos; /etc/nsswitch.conf&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L10&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;10&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC10&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;[ &lt;span class=&quot;pl-k&quot;&gt;!&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-e&lt;/span&gt; /etc/nsswitch.conf ] &lt;span class=&quot;pl-k&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;hosts: files dns&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;&amp;gt;&lt;/span&gt; /etc/nsswitch.conf&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L11&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;11&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC11&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;apk add --no-cache --virtual .build-deps&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L12&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;12&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC12&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;apk add --no-cache --virtual gcc gnupg go musl-dev openssl&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L13&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;13&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC13&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;export&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L14&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;14&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC14&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; set GOROOT_BOOTSTRAP such that we can actually build Go&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L15&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;15&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC15&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;		GOROOT_BOOTSTRAP=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;$(&lt;/span&gt;go env GOROOT&lt;span class=&quot;pl-pds&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L16&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;16&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC16&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; ... and set &amp;quot;cross-building&amp;quot; related vars to the installed system&amp;apos;s values so that we create a build targeting the proper arch&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L17&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;17&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC17&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; (for example, if our build host is GOARCH=amd64, but our build env/image is GOARCH=386, our build needs GOARCH=386)&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L18&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;18&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC18&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;		GOOS=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;$(&lt;/span&gt;go env GOOS&lt;span class=&quot;pl-pds&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L19&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;19&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC19&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;		GOARCH=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;$(&lt;/span&gt;go env GOARCH&lt;span class=&quot;pl-pds&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L20&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;20&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC20&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;		GOHOSTOS=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;$(&lt;/span&gt;go env GOHOSTOS&lt;span class=&quot;pl-pds&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L21&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;21&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC21&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;		GOHOSTARCH=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;$(&lt;/span&gt;go env GOHOSTARCH&lt;span class=&quot;pl-pds&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L22&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;22&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC22&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	&lt;span class=&quot;pl-k&quot;&gt;;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L23&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;23&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC23&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; also explicitly set GO386 and GOARM if appropriate&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L24&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;24&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC24&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; https://github.com/docker-library/golang/issues/184&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L25&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;25&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC25&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	apkArch=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;$(&lt;/span&gt;apk --print-arch&lt;span class=&quot;pl-pds&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L26&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;26&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC26&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	&lt;span class=&quot;pl-k&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;$apkArch&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;in&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L27&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;27&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC27&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;		armhf) &lt;span class=&quot;pl-k&quot;&gt;export&lt;/span&gt; GOARM=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;6&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt; ;; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L28&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;28&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC28&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;		armv7) &lt;span class=&quot;pl-k&quot;&gt;export&lt;/span&gt; GOARM=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;7&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt; ;; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L29&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;29&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC29&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;		x86) &lt;span class=&quot;pl-k&quot;&gt;export&lt;/span&gt; GO386=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;387&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt; ;; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L30&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;30&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC30&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	&lt;span class=&quot;pl-k&quot;&gt;esac&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L31&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;31&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC31&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L32&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;32&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC32&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; https://github.com/golang/go/issues/38536#issuecomment-616897960&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L33&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;33&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC33&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	url=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;https://storage.googleapis.com/golang/go1.15.2.src.tar.gz&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L34&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;34&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC34&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	sha256=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;28bf9d0bcde251011caae230a4a05d917b172ea203f2a62f2c2f9533589d4b4d&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L35&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;35&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC35&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L36&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;36&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC36&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	wget -O go.tgz.asc &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;$url&lt;/span&gt;.asc&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L37&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;37&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC37&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	wget -O go.tgz &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;$url&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L38&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;38&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC38&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	&lt;span class=&quot;pl-c1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;$sha256&lt;/span&gt; *go.tgz&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;|&lt;/span&gt; sha256sum -c -&lt;span class=&quot;pl-k&quot;&gt;;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L39&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;39&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC39&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L40&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;40&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC40&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; https://github.com/golang/go/issues/14739#issuecomment-324767697&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L41&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;41&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC41&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	&lt;span class=&quot;pl-k&quot;&gt;export&lt;/span&gt; GNUPGHOME=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;$(&lt;/span&gt;mktemp -d&lt;span class=&quot;pl-pds&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L42&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;42&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC42&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; https://www.google.com/linuxrepositories/&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L43&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;43&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC43&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;EB4C 1BFD 4F04 2F6D DDCC EC91 7721 F63B D38B 4796&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L44&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;44&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC44&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	gpg --batch --verify go.tgz.asc go.tgz&lt;span class=&quot;pl-k&quot;&gt;;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L45&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;45&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC45&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	gpgconf --kill all&lt;span class=&quot;pl-k&quot;&gt;;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L46&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;46&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC46&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	rm -rf &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;$GNUPGHOME&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; go.tgz.asc&lt;span class=&quot;pl-k&quot;&gt;;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L47&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;47&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC47&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L48&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;48&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC48&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	tar -C /usr/local -xzf go.tgz&lt;span class=&quot;pl-k&quot;&gt;;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L49&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;49&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC49&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	rm go.tgz&lt;span class=&quot;pl-k&quot;&gt;;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L50&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;50&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC50&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L51&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;51&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC51&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	goEnv=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;$(&lt;/span&gt;go env &lt;span class=&quot;pl-k&quot;&gt;|&lt;/span&gt; sed -rn -e &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;/^GO(OS|ARCH|ARM|386)=/s//export 0/p&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L52&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;52&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC52&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	&lt;span class=&quot;pl-c1&quot;&gt;eval&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;$goEnv&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L53&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;53&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC53&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	[ &lt;span class=&quot;pl-k&quot;&gt;-n&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;$GOOS&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; ]&lt;span class=&quot;pl-k&quot;&gt;;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L54&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;54&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC54&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	[ &lt;span class=&quot;pl-k&quot;&gt;-n&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;$GOARCH&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; ]&lt;span class=&quot;pl-k&quot;&gt;;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L55&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;55&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC55&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	( &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L56&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;56&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC56&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;		&lt;span class=&quot;pl-c1&quot;&gt;cd&lt;/span&gt; /usr/local/go/src&lt;span class=&quot;pl-k&quot;&gt;;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L57&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;57&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC57&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;		./make.bash&lt;span class=&quot;pl-k&quot;&gt;;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L58&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;58&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC58&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	)&lt;span class=&quot;pl-k&quot;&gt;;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L59&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;59&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC59&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L60&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;60&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC60&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	apk del --no-network .build-deps&lt;span class=&quot;pl-k&quot;&gt;;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L61&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;61&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC61&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L62&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;62&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC62&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; pre-compile the standard library, just like the official binary release tarballs do&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L63&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;63&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC63&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	go install std&lt;span class=&quot;pl-k&quot;&gt;;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L64&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;64&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC64&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; go install: -race is only supported on linux/amd64, linux/ppc64le, linux/arm64, freebsd/amd64, netbsd/amd64, darwin/amd64 and windows/amd64&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L65&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;65&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC65&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt;	go install -race std; &lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L66&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;66&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC66&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L67&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;67&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC67&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; remove a few intermediate / bootstrapping files the official binary release tarballs do not contain&lt;/span&gt;&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L68&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;68&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC68&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	rm -rf &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L69&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;69&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC69&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;		/usr/local/go/pkg/&lt;span class=&quot;pl-k&quot;&gt;*&lt;/span&gt;/cmd &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L70&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;70&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC70&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;		/usr/local/go/pkg/bootstrap &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L71&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;71&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC71&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;		/usr/local/go/pkg/obj &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L72&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;72&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC72&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;		/usr/local/go/pkg/tool/&lt;span class=&quot;pl-k&quot;&gt;*&lt;/span&gt;/api &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L73&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;73&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC73&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;		/usr/local/go/pkg/tool/&lt;span class=&quot;pl-k&quot;&gt;*&lt;/span&gt;/go_bootstrap &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L74&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;74&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC74&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;		/usr/local/go/src/cmd/dist/dist &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L75&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;75&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC75&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	&lt;span class=&quot;pl-k&quot;&gt;;&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L76&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;76&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC76&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;	&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;     &lt;td id=&quot;file-alpine-go-sh-L77&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;77&quot;&gt;&lt;/td&gt;     &lt;td id=&quot;file-alpine-go-sh-LC77&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;go version&lt;/td&gt;   &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;   &lt;/div&gt;   &lt;div class=&quot;gist-meta&quot;&gt;     &lt;a href=&quot;https://gist.github.com/richard24se/80f67461078ba26eb8abd044dfbeac76/raw/82237abff3e1fe22b59ad90d203ac37590284648/alpine.go.sh&quot; style=&quot;float:right&quot;&gt;view raw&lt;/a&gt;     &lt;a href=&quot;https://gist.github.com/richard24se/80f67461078ba26eb8abd044dfbeac76#file-alpine-go-sh&quot;&gt;alpine.go.sh&lt;/a&gt;     hosted with &amp;#x2764; by &lt;a href=&quot;https://github.com&quot;&gt;GitHub&lt;/a&gt;   &lt;/div&gt; &lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>WSL2 - Instalar Docker en Ubuntu</title>
        <link>https://fausto.app/notes/wsl2-instalar-docker-en-ubuntu</link>
        <guid>https://fausto.app/notes/wsl2-instalar-docker-en-ubuntu</guid>
        <pubDate>jue., 13 ago. 2020 09:53:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola, instalaremos Docker en Ubuntu WSL2!&lt;/p&gt;







&lt;p&gt;


&lt;/p&gt;




&lt;p&gt;Para esto es necesario tener instalado el WSL2, s&amp;#xED; lo &amp;#xFA;ltimo de Microsoft Windows para hacer Devs en Linux m&amp;#xE1;s c&amp;#xF3;modo. Sino lo tienes te recomiendo que visites este art&amp;#xED;culo:&lt;/p&gt;




&lt;p&gt;


&lt;/p&gt;




&lt;div data-embed=&quot;true&quot;&gt;&lt;aside class=&quot;embed-card&quot;&gt;&lt;article&gt;&lt;img src=&quot;https://fausto.app/uploads/2019/01/gnulinux.png&quot; data-mce-src=&quot;https://fausto.app/uploads/2019/01/gnulinux.png&quot;&gt;&lt;h3&gt;&lt;a href=&quot;https://fausto.app/notes/wsl2-windows-10&quot; data-mce-href=&quot;https://fausto.app/notes/wsl2-windows-10&quot;&gt;WSL2 - Windows 10&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Hola!&lt;!--mce:protected %0A--&gt;Un competidor directo a herramientas para poder utilizar Linux en Windows de forma c&amp;#xF3;moda (tipo Vagrant) ha nacido, y para quedarse.&lt;!--mce:protected %0A--&gt;WSL1 era un sub sistema de linux que serv&amp;#xED;a para cosas m&amp;#xED;nimas, pero no era un kernel 100% real. Ahora con WSL2 esto ha cambiado, nos trae un modo 100%&lt;/p&gt;&lt;/article&gt;&lt;footer&gt;&lt;img src=&quot;https://www.fausto.app/uploads/2019/01/devop_logo_1.png?thumbnail=256&amp;amp;key=97c49f839ecff98ab1dbc46a04a1444c7f429f03474c47914788ba68c0efb771&quot; data-mce-src=&quot;/uploads/2019/01/devop_logo_1.png?thumbnail=256&amp;amp;key=97c49f839ecff98ab1dbc46a04a1444c7f429f03474c47914788ba68c0efb771&quot;&gt;&lt;a href=&quot;https://fausto.app/notes/wsl2-windows-10&quot; data-mce-href=&quot;https://fausto.app/notes/wsl2-windows-10&quot;&gt;El blog de Fausto&lt;/a&gt;&lt;/footer&gt;&lt;/aside&gt;&lt;/div&gt;




&lt;p&gt;



&lt;/p&gt;




&lt;p&gt;Luego de tener el requerimiento, b&amp;#xFA;scamos la &amp;quot;app&amp;quot; Ubuntu en el MS Store!&lt;/p&gt;




&lt;div data-embed=&quot;true&quot;&gt;&lt;aside class=&quot;embed-card&quot;&gt;&lt;article&gt;&lt;img src=&quot;https://store-images.s-microsoft.com/image/apps.11540.13510798887446365.018f40a9-2b3c-4ff8-bb22-6247f3e8bb82.47ace6ff-3c7d-4997-be92-fa4a468c8323?w=120&amp;amp;h=120&amp;amp;q=60&quot;&gt;&lt;h3&gt;&lt;a href=&quot;https://www.microsoft.com/es-pe/p/ubuntu/9nblggh4msv6&quot;&gt;Obtener Ubuntu: Microsoft Store es-PE&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Descarga esta aplicaci&amp;#xF3;n de Microsoft Store para Windows 10. Obt&amp;#xE9;n capturas de pantalla, lee las opiniones m&amp;#xE1;s recientes de los clientes y compara las clasificaciones de Ubuntu. &lt;/p&gt;&lt;/article&gt;&lt;footer&gt;&lt;a href=&quot;https://www.microsoft.com/es-pe/p/ubuntu/9nblggh4msv6&quot;&gt;Microsoft Store&lt;/a&gt;&lt;/footer&gt;&lt;/aside&gt;&lt;/div&gt;




&lt;p&gt;Lo instalamos para luego abrir la aplicaci&amp;#xF3;n y entrar a su shell (bash o Bourne-again&amp;#xA0;shell)!&lt;/p&gt;


&lt;p&gt;Para esto hice un script que nos aliviar&amp;#xE1; todo el trabajo de instalar Docker en Ubuntu. Desc&amp;#xE1;rgalo y crea el archivo, pero no te olvides que el &amp;quot;&lt;strong&gt;secuencia de fin de l&amp;#xED;nea&lt;/strong&gt;&amp;quot; debe ser&lt;span&gt;&amp;#xA0;&lt;/span&gt;&lt;strong&gt;LF&lt;/strong&gt;&lt;span&gt;&amp;#xA0;&lt;/span&gt;para que pueda ser ejecutado como script en entornos Linux. Sino, puedes copiar y pegar comando por comando para hacer la instalaci&amp;#xF3;n!&amp;#xA0;&lt;/p&gt;


&lt;div data-embed=&quot;true&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;https://github.githubassets.com/assets/gist-embed-7a59ed5877d0678b9bff25b5eef62843.css&quot;&gt;
&lt;div id=&quot;gist104848854&quot; class=&quot;gist&quot;&gt; &lt;div class=&quot;gist-file&quot; translate=&quot;no&quot;&gt;   &lt;div class=&quot;gist-data&quot;&gt;     &lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;&lt;div id=&quot;file-ubuntu-wsl2-docker-sh&quot; class=&quot;file my-2&quot;&gt; &lt;div itemprop=&quot;text&quot; class=&quot;Box-body p-0 blob-wrapper data type-shell  &quot;&gt;   &lt;div class=&quot;js-check-bidi js-blob-code-container blob-code-content&quot;&gt;&lt;template class=&quot;js-file-alert-template&quot;&gt;&lt;div data-view-component=&quot;true&quot; class=&quot;flash flash-warn flash-full d-flex flex-items-center&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; data-view-component=&quot;true&quot; class=&quot;octicon octicon-alert&quot;&gt; &lt;path fill-rule=&quot;evenodd&quot; d=&quot;M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z&quot;/&gt;&lt;/svg&gt; &lt;span&gt;   This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.   &lt;a href=&quot;https://github.co/hiddenchars&quot; target=&quot;_blank&quot;&gt;Learn more about bidirectional Unicode characters&lt;/a&gt; &lt;/span&gt;&lt;div data-view-component=&quot;true&quot; class=&quot;flash-action&quot;&gt;        &lt;a href=&quot;https://fausto.app/%7B%7B%20revealButtonHref%20%7D%7D&quot; data-view-component=&quot;true&quot; class=&quot;btn-sm btn&quot;&gt;  Show hidden characters&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/template&gt;&lt;template class=&quot;js-line-alert-template&quot;&gt;&lt;span aria-label=&quot;This line has hidden Unicode characters&quot; data-view-component=&quot;true&quot; class=&quot;line-alert tooltipped tooltipped-e&quot;&gt; &lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; data-view-component=&quot;true&quot; class=&quot;octicon octicon-alert&quot;&gt; &lt;path fill-rule=&quot;evenodd&quot; d=&quot;M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z&quot;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/template&gt;&lt;table class=&quot;highlight tab-size js-file-line-container js-code-nav-container js-tagsearch-file&quot; data-tab-size=&quot;8&quot; data-paste-markdown-skip=&quot;&quot; data-tagsearch-lang=&quot;Shell&quot; data-tagsearch-path=&quot;ubuntu-wsl2-docker.sh&quot;&gt;     &lt;tbody&gt;&lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L1&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;1&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC1&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; install packages&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L2&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;2&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC2&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;sudo apt-get update&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L3&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;3&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC3&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;sudo apt-get install nload htop -y&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L4&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;4&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC4&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; if your user doesn&amp;apos;t exists then remove sudo passwords&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L5&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;5&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC5&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;USERNAME=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;$(&lt;/span&gt;whoami&lt;span class=&quot;pl-pds&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L6&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;6&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC6&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;sudo grep -qxF &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;${USERNAME}&lt;/span&gt; ALL=(ALL) NOPASSWD: ALL&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /etc/sudoers &lt;span class=&quot;pl-k&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;${USERNAME}&lt;/span&gt; ALL=(ALL) NOPASSWD: ALL&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;|&lt;/span&gt; sudo tee -a /etc/sudoers&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L7&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;7&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC7&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; install reqs docker&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L8&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;8&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC8&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;sudo apt-get install apt-transport-https ca-certificates curl software-properties-common -y&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L9&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;9&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC9&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;curl -fsSL https://download.docker.com/linux/ubuntu/gpg &lt;span class=&quot;pl-k&quot;&gt;|&lt;/span&gt; sudo apt-key add&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L10&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;10&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC10&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;sudo add-apt-repository &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;deb [arch=amd64] https://download.docker.com/linux/ubuntu &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;$(&lt;/span&gt;lsb_release -cs&lt;span class=&quot;pl-pds&quot;&gt;)&lt;/span&gt;&lt;/span&gt; stable&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L11&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;11&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC11&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;sudo DEBIAN_FRONTEND=noninteractive apt-get -y -o DPkg::options::=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;--force-confdef&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; -o DPkg::options::=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;--force-confold&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;  install grub-pc&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L12&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;12&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC12&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; install docker&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L13&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;13&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC13&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;sudo apt-get install docker-ce -y&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L14&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;14&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC14&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; add perm docker&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L15&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;15&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC15&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;sudo usermod -aG docker &lt;span class=&quot;pl-smi&quot;&gt;${USERNAME}&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L16&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;16&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC16&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; configure start docker when logging&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L17&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;17&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC17&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;grep -qxF &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;sudo service docker start&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;$HOME&lt;/span&gt;/.bashrc &lt;span class=&quot;pl-k&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;sudo service docker start&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;|&lt;/span&gt; tee -a &lt;span class=&quot;pl-smi&quot;&gt;$HOME&lt;/span&gt;/.bashrc&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L18&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;18&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC18&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; start docker&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L19&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;19&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC19&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;sudo service docker start&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L20&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;20&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC20&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; verify docker note: first time with sudo&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L21&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;21&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC21&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;sudo docker info&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L22&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;22&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC22&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; install packages reqs for docker-compose&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L23&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;23&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC23&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;sudo apt-get install python3-pip -y&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L24&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;24&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC24&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; upgrade pip3&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L25&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;25&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC25&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;pip3 install pip -U&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L26&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;26&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC26&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; install docker-compose&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L27&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;27&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC27&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;pip3 install docker-compose&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L28&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;28&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC28&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; first exit &amp;amp; verify docker-compose&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L29&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;29&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC29&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; docker-compose version&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L30&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;30&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC30&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; customs&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L31&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;31&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC31&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; timeout docker compose&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L32&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;32&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC32&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;grep -qxF &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;COMPOSE_HTTP_TIMEOUT=640000&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /etc/environment &lt;span class=&quot;pl-k&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;COMPOSE_HTTP_TIMEOUT=640000&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;|&lt;/span&gt; sudo tee -a /etc/environment&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L33&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;33&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC33&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; run portainer docker&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L34&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;34&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC34&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;!&lt;/span&gt; sudo docker ps --format &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;{{.Names}}&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;|&lt;/span&gt; grep -w portainer &lt;span class=&quot;pl-k&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;gt;&lt;/span&gt; /dev/null&lt;span class=&quot;pl-k&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;then&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L35&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;35&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC35&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;  sudo docker volume create portainer_data &lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L36&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;36&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC36&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;  sudo docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-L37&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;37&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-ubuntu-wsl2-docker-sh-LC37&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;fi&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;   &lt;/div&gt;   &lt;div class=&quot;gist-meta&quot;&gt;     &lt;a href=&quot;https://gist.github.com/richard24se/71475114ea97dd52b70dcb53b85d2842/raw/9fb4e6d156646844329f7f4996a443d9219e23e7/ubuntu-wsl2-docker.sh&quot; style=&quot;float:right&quot;&gt;view raw&lt;/a&gt;     &lt;a href=&quot;https://gist.github.com/richard24se/71475114ea97dd52b70dcb53b85d2842#file-ubuntu-wsl2-docker-sh&quot;&gt;       ubuntu-wsl2-docker.sh     &lt;/a&gt;     hosted with &amp;#x2764; by &lt;a href=&quot;https://github.com&quot;&gt;GitHub&lt;/a&gt;   &lt;/div&gt; &lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;span&gt;Sigue bien los pasos del script, y al final podr&amp;#xE1;s utilizar tranquilamente docker y docker-compose para tus desarrollos&lt;/span&gt;&lt;/p&gt;


&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>WSL2 - Instalar Docker en Alpine Linux</title>
        <link>https://fausto.app/notes/wsl2-instalar-docker-en-alpine-linux</link>
        <guid>https://fausto.app/notes/wsl2-instalar-docker-en-alpine-linux</guid>
        <pubDate>jue., 13 ago. 2020 09:28:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola instalaremos Docker en Alpine WSL2&lt;/p&gt;










&lt;p&gt;Para esto es necesario tener instalado el WSL2, s&amp;#xED; lo &amp;#xFA;ltimo de Microsoft Windows para hacer Devs en Linux m&amp;#xE1;s c&amp;#xF3;modo. Sino lo tienes te recomiendo que visites este art&amp;#xED;culo:&lt;/p&gt;










&lt;div data-embed=&quot;true&quot;&gt;&lt;aside class=&quot;embed-card&quot;&gt;&lt;article&gt;&lt;img src=&quot;https://fausto.app/uploads/2019/01/gnulinux.png&quot;&gt;&lt;h3&gt;&lt;a href=&quot;https://fausto.app/notes/wsl2-windows-10&quot;&gt;WSL2 - Windows 10&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Hola!&lt;!--mce:protected %0A--&gt;Un competidor directo a herramientas para poder utilizar Linux en Windows de forma c&amp;#xF3;moda (tipo Vagrant) ha nacido, y para quedarse.&lt;!--mce:protected %0A--&gt;WSL1 era un sub sistema de linux que serv&amp;#xED;a para cosas m&amp;#xED;nimas, pero no era un kernel 100% real. Ahora con WSL2 esto ha cambiado, nos trae un modo 100%&lt;/p&gt;&lt;/article&gt;&lt;footer&gt;&lt;img src=&quot;https://www.fausto.app/uploads/2019/01/devop_logo_1.png?thumbnail=256&amp;amp;key=97c49f839ecff98ab1dbc46a04a1444c7f429f03474c47914788ba68c0efb771&quot;&gt;&lt;a href=&quot;https://fausto.app/notes/wsl2-windows-10&quot;&gt;El blog de Fausto&lt;/a&gt;&lt;/footer&gt;&lt;/aside&gt;&lt;/div&gt;











&lt;p&gt;Luego de tener el requerimiento, b&amp;#xFA;scamos la &amp;quot;app&amp;quot; Alpine en el MS Store!&lt;/p&gt;










&lt;div data-embed=&quot;true&quot;&gt;&lt;aside class=&quot;embed-card&quot;&gt;&lt;article&gt;&lt;img src=&quot;https://store-images.s-microsoft.com/image/apps.55404.14097880338457896.7d52ee5f-68d6-4a59-87f9-0ffa0ff496d8.96955592-c100-4de4-95aa-98f29ef9decd?w=120&amp;amp;h=120&amp;amp;q=60&quot;&gt;&lt;h3&gt;&lt;a href=&quot;https://www.microsoft.com/es-pe/p/alpine-wsl/9p804crf0395&quot;&gt;Obtener Alpine WSL: Microsoft Store es-PE&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Descarga esta aplicaci&amp;#xF3;n de Microsoft Store para Windows 10. Obt&amp;#xE9;n capturas de pantalla, lee las opiniones m&amp;#xE1;s recientes de los clientes y compara las clasificaciones de Alpine WSL. &lt;/p&gt;&lt;/article&gt;&lt;footer&gt;&lt;a href=&quot;https://www.microsoft.com/es-pe/p/alpine-wsl/9p804crf0395&quot;&gt;Microsoft Store&lt;/a&gt;&lt;/footer&gt;&lt;/aside&gt;&lt;/div&gt;










&lt;p&gt;Lo instalamos para luego abrir la aplicaci&amp;#xF3;n y entrar a su shell (ash o &lt;span&gt;Almquist shell&lt;/span&gt;)!&lt;/p&gt;










&lt;p&gt;Para esto hice un script que nos aliviar&amp;#xE1; todo el trabajo de instalar Docker en Alpine. Desc&amp;#xE1;rgalo y crea el archivo, pero no te olvides que el &amp;quot;&lt;strong&gt;secuencia de fin de l&amp;#xED;nea&lt;/strong&gt;&amp;quot; debe ser &lt;strong&gt;LF&lt;/strong&gt; para que pueda ser ejecutado como script en entornos Linux. Sino, puedes copiar y pegar comando por comando para hacer la instalaci&amp;#xF3;n!&amp;#xA0;&lt;/p&gt;











&lt;div data-embed=&quot;true&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;https://github.githubassets.com/assets/gist-embed-7a59ed5877d0678b9bff25b5eef62843.css&quot;&gt;
&lt;div id=&quot;gist104833025&quot; class=&quot;gist&quot;&gt; &lt;div class=&quot;gist-file&quot; translate=&quot;no&quot;&gt;   &lt;div class=&quot;gist-data&quot;&gt;     &lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;&lt;div id=&quot;file-alpine-wsl2-docker-sh&quot; class=&quot;file my-2&quot;&gt; &lt;div itemprop=&quot;text&quot; class=&quot;Box-body p-0 blob-wrapper data type-shell  &quot;&gt;   &lt;div class=&quot;js-check-bidi js-blob-code-container blob-code-content&quot;&gt;&lt;template class=&quot;js-file-alert-template&quot;&gt;&lt;div data-view-component=&quot;true&quot; class=&quot;flash flash-warn flash-full d-flex flex-items-center&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; data-view-component=&quot;true&quot; class=&quot;octicon octicon-alert&quot;&gt; &lt;path fill-rule=&quot;evenodd&quot; d=&quot;M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z&quot;/&gt;&lt;/svg&gt; &lt;span&gt;   This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.   &lt;a href=&quot;https://github.co/hiddenchars&quot; target=&quot;_blank&quot;&gt;Learn more about bidirectional Unicode characters&lt;/a&gt; &lt;/span&gt;&lt;div data-view-component=&quot;true&quot; class=&quot;flash-action&quot;&gt;        &lt;a href=&quot;https://fausto.app/%7B%7B%20revealButtonHref%20%7D%7D&quot; data-view-component=&quot;true&quot; class=&quot;btn-sm btn&quot;&gt;  Show hidden characters&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/template&gt;&lt;template class=&quot;js-line-alert-template&quot;&gt;&lt;span aria-label=&quot;This line has hidden Unicode characters&quot; data-view-component=&quot;true&quot; class=&quot;line-alert tooltipped tooltipped-e&quot;&gt; &lt;svg aria-hidden=&quot;true&quot; height=&quot;16&quot; viewbox=&quot;0 0 16 16&quot; version=&quot;1.1&quot; width=&quot;16&quot; data-view-component=&quot;true&quot; class=&quot;octicon octicon-alert&quot;&gt; &lt;path fill-rule=&quot;evenodd&quot; d=&quot;M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z&quot;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/template&gt;&lt;table class=&quot;highlight tab-size js-file-line-container js-code-nav-container js-tagsearch-file&quot; data-tab-size=&quot;8&quot; data-paste-markdown-skip=&quot;&quot; data-tagsearch-lang=&quot;Shell&quot; data-tagsearch-path=&quot;alpine-wsl2-docker.sh&quot;&gt;     &lt;tbody&gt;&lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L1&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;1&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC1&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; change to root and install packages&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L2&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;2&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC2&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;su -c &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;apk add sudo openrc curl python3 python3-dev nload htop&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L3&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;3&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC3&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; if your user doesn&amp;apos;t exists then remove sudo passwords&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L4&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;4&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC4&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;USERNAME=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;$(&lt;/span&gt;whoami&lt;span class=&quot;pl-pds&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L5&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;5&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC5&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;su -c &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;grep -qxF &amp;apos;&lt;span class=&quot;pl-smi&quot;&gt;${USERNAME}&lt;/span&gt; ALL=(ALL) NOPASSWD: ALL&amp;apos; /etc/sudoers || echo &amp;apos;&lt;span class=&quot;pl-smi&quot;&gt;${USERNAME}&lt;/span&gt; ALL=(ALL) NOPASSWD: ALL&amp;apos; |  tee -a /etc/sudoers&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L6&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;6&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC6&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; install compilers&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L7&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;7&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC7&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;sudo apk add build-base&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L8&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;8&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC8&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; install pip3&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L9&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;9&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC9&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;sudo apk add py3-pip&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L10&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;10&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC10&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; upgrade pip3&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L11&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;11&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC11&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;sudo pip3 install pip -U&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L12&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;12&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC12&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; install docker&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L13&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;13&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC13&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;sudo apk add docker&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L14&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;14&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC14&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; mount cgroup&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L15&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;15&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC15&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;cgroup /sys/fs/cgroup cgroup defaults 0 0&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;|&lt;/span&gt; sudo tee -a  /etc/fstab&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L16&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;16&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC16&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; add perm docker&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L17&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;17&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC17&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;sudo usermod -aG docker &lt;span class=&quot;pl-smi&quot;&gt;${USERNAME}&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L18&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;18&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC18&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; get start script docker&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L19&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;19&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC19&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;curl https://gist.githubusercontent.com/richard24se/c41d7edde19ccb87ef8d1083822d4e26/raw/094d8a98aee2b10ea397ec210f06c3ae83be67ef/alpine.docker.service.sh --output &lt;span class=&quot;pl-smi&quot;&gt;${HOME}&lt;/span&gt;/alpine.docker.service.sh&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L20&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;20&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC20&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; configure start docker when logging&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L21&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;21&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC21&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;. &lt;span class=&quot;pl-smi&quot;&gt;$HOME&lt;/span&gt;/alpine.docker.service.sh&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;$HOME&lt;/span&gt;/.profile&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L22&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;22&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC22&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; start docker&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L23&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;23&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC23&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;$HOME&lt;/span&gt;/alpine.docker.service.sh&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L24&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;24&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC24&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; verify docker note: first time with sudo&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L25&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;25&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC25&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;sudo docker info&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L26&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;26&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC26&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; install packages reqs for docker-compose&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L27&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;27&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC27&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;sudo apk add gcc musl-dev libressl-dev libffi-dev make cargo&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L28&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;28&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC28&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; install docker-compose&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L29&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;29&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC29&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;sudo pip3 install docker-compose&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L30&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;30&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC30&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; verify docker-compose&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L31&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;31&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC31&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;docker-compose version&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L32&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;32&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC32&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; cgroup systemd&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L33&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;33&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC33&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;cat &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;EOT&lt;/span&gt; &amp;gt; $HOME/alpine.cgroup.systemd.sh&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L34&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;34&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC34&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-s&quot;&gt;if [ ! -d /sys/fs/cgroup/systemd ]; then&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L35&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;35&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC35&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-s&quot;&gt;  sudo mkdir /sys/fs/cgroup/systemd&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L36&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;36&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC36&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-s&quot;&gt;  echo &amp;quot;creating cgroup systemd folder...&amp;quot;&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L37&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;37&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC37&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-s&quot;&gt;fi&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L38&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;38&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC38&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-s&quot;&gt;if ! grep -qs &amp;apos;/sys/fs/cgroup/systemd&amp;apos; /proc/mounts; then&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L39&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;39&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC39&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-s&quot;&gt;  sudo mount -n -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L40&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;40&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC40&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-s&quot;&gt;  echo &amp;quot;mounting cgroup systemd folder...&amp;quot;&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L41&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;41&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC41&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-s&quot;&gt;fi&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L42&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;42&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC42&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;EOT&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L43&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;43&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC43&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; configure start cgroup systemd&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L44&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;44&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC44&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;. &lt;span class=&quot;pl-smi&quot;&gt;$HOME&lt;/span&gt;/alpine.cgroup.systemd.sh&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;$HOME&lt;/span&gt;/.profile&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L45&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;45&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC45&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; start cgroup systemd&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L46&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;46&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC46&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;$HOME&lt;/span&gt;/alpine.cgroup.systemd.sh&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L47&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;47&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC47&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; -----&amp;gt; customs &amp;lt;----- #&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L48&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;48&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC48&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; timeout docker compose&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L49&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;49&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC49&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;grep -qxF &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;COMPOSE_HTTP_TIMEOUT=640000&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /etc/environment &lt;span class=&quot;pl-k&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;COMPOSE_HTTP_TIMEOUT=640000&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;|&lt;/span&gt; sudo tee -a /etc/environment&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L50&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;50&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC50&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; run portainer docker&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L51&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;51&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC51&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;!&lt;/span&gt; sudo docker ps --format &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;{{.Names}}&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;|&lt;/span&gt; grep -w portainer &lt;span class=&quot;pl-k&quot;&gt;&amp;amp;&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;gt;&lt;/span&gt; /dev/null&lt;span class=&quot;pl-k&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;then&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L52&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;52&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC52&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;  sudo docker volume create portainer_data &lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L53&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;53&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC53&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;  sudo docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L54&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;54&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC54&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;fi&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L55&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;55&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC55&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; custom shell&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L56&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;56&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC56&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;VAR_PS1=&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;export PS1=&amp;quot;[033[02;90m]u@[033[02;90m]h [033[02;31m]W [033[02;32m]# [033[0m]&amp;quot;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-L57&quot; class=&quot;blob-num js-line-number js-code-nav-line-number&quot; data-line-number=&quot;57&quot;&gt;&lt;/td&gt;       &lt;td id=&quot;file-alpine-wsl2-docker-sh-LC57&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;sudo sed -i &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;/PS1/c&lt;span class=&quot;pl-smi&quot;&gt;${VAR_PS1}&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; /etc/profile&lt;/td&gt;     &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;   &lt;/div&gt;   &lt;div class=&quot;gist-meta&quot;&gt;     &lt;a href=&quot;https://gist.github.com/richard24se/336cb2502400a63f4670c751eaca1929/raw/a2bdc0cb3d2cb53ebdcfc58b50e3b59f55e9752b/alpine-wsl2-docker.sh&quot; style=&quot;float:right&quot;&gt;view raw&lt;/a&gt;     &lt;a href=&quot;https://gist.github.com/richard24se/336cb2502400a63f4670c751eaca1929#file-alpine-wsl2-docker-sh&quot;&gt;       alpine-wsl2-docker.sh     &lt;/a&gt;     hosted with &amp;#x2764; by &lt;a href=&quot;https://github.com&quot;&gt;GitHub&lt;/a&gt;   &lt;/div&gt; &lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;










&lt;p&gt;Sigue bien los pasos del script, y al final podr&amp;#xE1;s utilizar tranquilamente docker y docker-compose para tus desarrollos&lt;/p&gt;










&lt;p&gt;Sabemos que es ligero, es decir s&amp;#xFA;per minimal; sin embargo, un dato para tener en cuenta por qu&amp;#xE9; usar Alpine es que su instalaci&amp;#xF3;n completa con docker y docker-compose tiene un tama&amp;#xF1;o de 860MB, sumamente inferior a un ubuntu, que f&amp;#xE1;cilmente puede pasar los 4GB.&lt;/p&gt;






&lt;p&gt;&lt;/p&gt;





&lt;p&gt;&lt;/p&gt;




&lt;p&gt;&lt;/p&gt;



&lt;p&gt;&lt;/p&gt;


&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>WSL2 - Windows 10</title>
        <link>https://fausto.app/notes/wsl2-windows-10</link>
        <guid>https://fausto.app/notes/wsl2-windows-10</guid>
        <pubDate>mié., 12 ago. 2020 16:34:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola!&lt;/p&gt;





&lt;p&gt;Un competidor directo a herramientas para poder utilizar Linux en Windows de forma c&amp;#xF3;moda (tipo Vagrant) ha nacido, y para quedarse.&lt;/p&gt;





&lt;p&gt;WSL1 era un sub sistema de linux que serv&amp;#xED;a para cosas m&amp;#xED;nimas, pero no era un kernel 100% real. Ahora con WSL2 esto ha cambiado, nos trae un modo 100% real de kernel Linux, todo esto gracias a Hyper-V, que nos permitir&amp;#xE1; hacer nuestros desarrollos c&amp;#xF3;modamente.&lt;/p&gt;




&lt;p&gt;&lt;span&gt;Antes que todo, es s&amp;#xFA;per importante tener la &amp;#xFA;ltima versi&amp;#xF3;n del Windows 10&amp;#xA0;&lt;strong&gt;Build 19041&lt;/strong&gt;. Para obtener la versi&amp;#xF3;n de tu build, utiliza el comando &lt;strong&gt;systeminfo&lt;/strong&gt; en el powershell.&lt;/span&gt;&lt;/p&gt;





&lt;p&gt;Para instalarlo sigue ejecuta los siguientes comandos en una ventana en modo administrador de &lt;strong&gt;&lt;em&gt;Powershell&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;





&lt;pre&gt;&lt;span&gt;#Activando sub sistema&lt;br&gt;dism.exe /online /&lt;/span&gt;&lt;span class=&quot;hljs-pscommand&quot;&gt;enable-feature&lt;/span&gt;&lt;span&gt; /featurename:&lt;/span&gt;&lt;span class=&quot;hljs-pscommand&quot;&gt;Microsoft-Windows&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span class=&quot;hljs-pscommand&quot;&gt;Subsystem-Linux&lt;/span&gt;&lt;span&gt; /all /norestart&lt;br&gt;#Activando Hyper-V&lt;br&gt;dism.exe /online /&lt;span class=&quot;hljs-pscommand&quot;&gt;enable-feature&lt;/span&gt; /featurename:VirtualMachinePlatform /all /norestart&lt;br&gt;&lt;br&gt;#-----&amp;gt; Debes reiniciar e instalar el kernel de linux antes de ejecutar el siguiente comando &lt;br&gt;#Cambiando versi&amp;#xF3;n&lt;br&gt;wsl&lt;span class=&quot;hljs-parameter&quot;&gt; --set-default-version&lt;/span&gt; &lt;span class=&quot;hljs-number&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;/pre&gt;





&lt;p&gt;&lt;span&gt;Pueden salir errores en el &amp;#xFA;ltimo comando, por ende te recomiendo instalar la nueva versi&amp;#xF3;n del kernel.&amp;#xA0;&lt;/span&gt;&lt;/p&gt;





&lt;p&gt;&lt;span&gt;Link para actualizar kernel Linux del WSL2. &lt;strong&gt;Esto es un paso requerido, sino no se podr&amp;#xE1; actualizar o definir la versi&amp;#xF3;n del WSL a 2&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;





&lt;div data-embed=&quot;true&quot;&gt;&lt;aside class=&quot;embed-card&quot;&gt;&lt;article&gt;&lt;img src=&quot;https://docs.microsoft.com/en-us/media/logos/logo-ms-social.png&quot;&gt;&lt;h3&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/windows/wsl/wsl2-kernel&quot;&gt;Updating the WSL 2 Linux kernel&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Instructions on how to update your WSL 2 Linux kernel manually&lt;/p&gt;&lt;/article&gt;&lt;footer&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/windows/wsl/wsl2-kernel&quot;&gt;Microsoft&lt;/a&gt;&lt;/footer&gt;&lt;/aside&gt;&lt;/div&gt;





&lt;p&gt;Para terminar, debemos reiniciar el SO para poder reci&amp;#xE9;n empezar a instalar cualquier imagen de Linux.&lt;/p&gt;
&lt;p&gt;Link donde est&amp;#xE1; toda la documentaci&amp;#xF3;n oficial del WSL2&lt;/p&gt;





&lt;div data-embed=&quot;true&quot;&gt;&lt;aside class=&quot;embed-card&quot;&gt;&lt;article&gt;&lt;img src=&quot;https://docs.microsoft.com/en-us/media/logos/logo-ms-social.png&quot;&gt;&lt;h3&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/windows/wsl/install-win10&quot;&gt;Install Windows Subsystem for Linux (WSL) on Windows 10&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Installation instructions for the Windows Subsystem for Linux on Windows 10.&lt;/p&gt;&lt;/article&gt;&lt;footer&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/windows/wsl/install-win10&quot;&gt;Microsoft&lt;/a&gt;&lt;/footer&gt;&lt;/aside&gt;&lt;/div&gt;





&lt;p&gt;Finalmente, despu&amp;#xE9;s de seguir todos los pasos correctamente puedes ir a la store de Microsoft y buscar una distro, puede ser un Ubuntu, o con el que te sientas c&amp;#xF3;modo. Yo por el momento recomiendo el Ubuntu, de los colgados es el que encuentro m&amp;#xE1;s compatible con Docker, si ese no es tu objetivo, entonces ve por otra distro!&lt;/p&gt;





&lt;div data-embed=&quot;true&quot;&gt;&lt;aside class=&quot;embed-card&quot;&gt;&lt;article&gt;&lt;img src=&quot;https://store-images.s-microsoft.com/image/apps.11540.13510798887446365.018f40a9-2b3c-4ff8-bb22-6247f3e8bb82.47ace6ff-3c7d-4997-be92-fa4a468c8323?w=120&amp;amp;h=120&amp;amp;q=60&quot;&gt;&lt;h3&gt;&lt;a href=&quot;https://www.microsoft.com/es-pe/p/ubuntu/9nblggh4msv6&quot;&gt;Obtener Ubuntu: Microsoft Store es-PE&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Descarga esta aplicaci&amp;#xF3;n de Microsoft Store para Windows 10. Obt&amp;#xE9;n capturas de pantalla, lee las opiniones m&amp;#xE1;s recientes de los clientes y compara las clasificaciones de Ubuntu. &lt;/p&gt;&lt;/article&gt;&lt;footer&gt;&lt;a href=&quot;https://www.microsoft.com/es-pe/p/ubuntu/9nblggh4msv6&quot;&gt;Microsoft Store&lt;/a&gt;&lt;/footer&gt;&lt;/aside&gt;&lt;/div&gt;





&lt;p&gt;&lt;/p&gt;





&lt;p&gt;&lt;strong&gt;Dato adicional&lt;/strong&gt;, si tienes soluciones como Vagrant con Virtualbox o similar, estas podr&amp;#xED;a recibir un crash ya que se activar&amp;#xE1; el Hyper-V, y con &amp;#xE9;ste no se llevan bien.&lt;/p&gt;





&lt;p&gt;&lt;/p&gt;




&lt;p&gt;&lt;/p&gt;



&lt;p&gt;&lt;/p&gt;


&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Bienvenida</title>
        <link>https://fausto.app/notes/welcome</link>
        <guid>https://fausto.app/notes/welcome</guid>
        <pubDate>mar., 07 jul. 2020 19:41:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola!&lt;/p&gt;

&lt;p&gt;C&amp;#xF3;mo est&amp;#xE1;s?&lt;/p&gt;
















&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Python - SQLAlchemy y sus sesiones</title>
        <link>https://fausto.app/notes/python-sqlalchemy</link>
        <guid>https://fausto.app/notes/python-sqlalchemy</guid>
        <pubDate>vie., 03 jul. 2020 16:37:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;&amp;#xA1;Hola! Esta vez veremos como usar SQLAlchemy y sus sesiones para conectarse con la DB MySQL.&lt;/p&gt;

&lt;p&gt;Para esto dejaremos un gist que nos ayudar&amp;#xE1; a entender de forma pr&amp;#xE1;ctica:&lt;/p&gt;

&lt;div data-embed=&quot;true&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;https://github.githubassets.com/assets/gist-embed-6bd07f67986e74ce739190b5eb187fe5.css&quot;&gt;&lt;div id=&quot;gist104134977&quot; class=&quot;gist&quot;&gt;&lt;!--mce:protected %0A--&gt;    &lt;div class=&quot;gist-file&quot;&gt;&lt;!--mce:protected %0A--&gt;      &lt;div class=&quot;gist-data&quot;&gt;&lt;!--mce:protected %0A--&gt;        &lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;&lt;!--mce:protected %0A--&gt;  &lt;div id=&quot;file-sqlalchemy_session-py&quot; class=&quot;file&quot;&gt;&lt;!--mce:protected %0A--&gt;    &lt;!--mce:protected %0A--&gt;&lt;!--mce:protected %0A--&gt;  &lt;div itemprop=&quot;text&quot; class=&quot;Box-body p-0 blob-wrapper data type-python &quot;&gt;&lt;!--mce:protected %0A--&gt;      &lt;!--mce:protected %0A--&gt;&lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot; data-paste-markdown-skip=&quot;&quot;&gt;&lt;!--mce:protected %0A--&gt;      &lt;tbody&gt;&lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L1&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC1&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#librer&amp;#xED;as&amp;#xA0;necesarias&amp;#xA0;para&amp;#xA0;utilizar&amp;#xA0;el&amp;#xA0;sqlalchemy&lt;/span&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L2&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC2&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;from&lt;/span&gt;&amp;#xA0;&lt;span class=&quot;pl-s1&quot;&gt;sqlalchemy&lt;/span&gt;&amp;#xA0;&lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt;&amp;#xA0;&lt;span class=&quot;pl-s1&quot;&gt;create_engine&lt;/span&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L3&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC3&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;from&lt;/span&gt;&amp;#xA0;&lt;span class=&quot;pl-s1&quot;&gt;sqlalchemy&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;orm&lt;/span&gt;&amp;#xA0;&lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt;&amp;#xA0;&lt;span class=&quot;pl-s1&quot;&gt;scoped_session&lt;/span&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L4&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC4&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;from&lt;/span&gt;&amp;#xA0;&lt;span class=&quot;pl-s1&quot;&gt;sqlalchemy&lt;/span&gt;.&lt;span class=&quot;pl-s1&quot;&gt;orm&lt;/span&gt;&amp;#xA0;&lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt;&amp;#xA0;&lt;span class=&quot;pl-s1&quot;&gt;sessionmaker&lt;/span&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L5&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC5&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&amp;#xA0;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L6&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;6&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC6&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#variable&amp;#xA0;engine&amp;#xA0;global&lt;/span&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L7&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;7&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC7&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-v&quot;&gt;ENGINE&lt;/span&gt;&amp;#xA0;&lt;span class=&quot;pl-c1&quot;&gt;=&lt;/span&gt;&amp;#xA0;&lt;span class=&quot;pl-c1&quot;&gt;None&lt;/span&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L8&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;8&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC8&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&amp;#xA0;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L9&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;9&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC9&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#La&amp;#xA0;funci&amp;#xF3;n&amp;#xA0;conexi&amp;#xF3;n,&amp;#xA0;sirve&amp;#xA0;para&amp;#xA0;crear&amp;#xA0;una&amp;#xA0;conexi&amp;#xF3;n&amp;#xA0;maestra&amp;#xA0;a&amp;#xA0;partir&amp;#xA0;de&amp;#xA0;engine(cadena&amp;#xA0;de&amp;#xA0;conexi&amp;#xF3;n)&amp;#xA0;que&amp;#xA0;recibe&amp;#xA0;credenciales&lt;/span&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L10&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;10&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC10&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;def&lt;/span&gt;&amp;#xA0;&lt;span class=&quot;pl-en&quot;&gt;createConnectionDB&lt;/span&gt;(&lt;span class=&quot;pl-s1&quot;&gt;conf&lt;/span&gt;:&amp;#xA0;&lt;span class=&quot;pl-s1&quot;&gt;dict&lt;/span&gt;):&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L11&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;11&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC11&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;span class=&quot;pl-c&quot;&gt;#Este&amp;#xA0;es&amp;#xA0;el&amp;#xA0;global&amp;#xA0;engine,&amp;#xA0;por&amp;#xA0;el&amp;#xA0;momento&amp;#xA0;se&amp;#xA0;usa&amp;#xA0;para&amp;#xA0;abastecer&amp;#xA0;al&amp;#xA0;ENGINE&amp;#xA0;global&amp;#xA0;que&amp;#xA0;se&amp;#xA0;usar&amp;#xE1;&amp;#xA0;al&amp;#xA0;momento&amp;#xA0;de&amp;#xA0;obtener&amp;#xA0;los&amp;#xA0;modelos&amp;#xA0;de&amp;#xA0;la&amp;#xA0;DB&lt;/span&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L12&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;12&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC12&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;span class=&quot;pl-k&quot;&gt;global&lt;/span&gt;&amp;#xA0;&lt;span class=&quot;pl-v&quot;&gt;ENGINE&lt;/span&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L13&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;13&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC13&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;span class=&quot;pl-c&quot;&gt;#Se&amp;#xA0;crea&amp;#xA0;el&amp;#xA0;engine&amp;#xA0;para&amp;#xA0;poder&amp;#xA0;crear&amp;#xA0;la&amp;#xA0;conexi&amp;#xF3;n&amp;#xA0;maestra&lt;/span&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L14&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;14&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC14&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;span class=&quot;pl-s1&quot;&gt;engine&lt;/span&gt;&amp;#xA0;&lt;span class=&quot;pl-c1&quot;&gt;=&lt;/span&gt;&amp;#xA0;&lt;span class=&quot;pl-en&quot;&gt;create_engine&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&amp;quot;mysql+pymysql://&amp;quot;&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;conf&lt;/span&gt;[&lt;span class=&quot;pl-s&quot;&gt;&amp;apos;user&amp;apos;&lt;/span&gt;]&lt;span class=&quot;pl-c1&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;quot;:&amp;quot;&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;conf&lt;/span&gt;[&lt;span class=&quot;pl-s&quot;&gt;&amp;apos;pass&amp;apos;&lt;/span&gt;]&lt;span class=&quot;pl-c1&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;quot;@&amp;quot;&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;conf&lt;/span&gt;[&lt;span class=&quot;pl-s&quot;&gt;&amp;apos;host&amp;apos;&lt;/span&gt;]&lt;span class=&quot;pl-c1&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;quot;:&amp;quot;&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;conf&lt;/span&gt;[&lt;span class=&quot;pl-s&quot;&gt;&amp;apos;port&amp;apos;&lt;/span&gt;]&lt;span class=&quot;pl-c1&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&amp;quot;/&amp;quot;&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;conf&lt;/span&gt;[&lt;span class=&quot;pl-s&quot;&gt;&amp;apos;dbname&amp;apos;&lt;/span&gt;],&lt;span class=&quot;pl-s1&quot;&gt;pool_size&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;3000&lt;/span&gt;,&amp;#xA0;&lt;span class=&quot;pl-s1&quot;&gt;max_overflow&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;1&lt;/span&gt;)&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L15&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;15&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC15&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;span class=&quot;pl-c&quot;&gt;#Con&amp;#xA0;el&amp;#xA0;engine&amp;#xA0;creado&amp;#xA0;se&amp;#xA0;abastece&amp;#xA0;el&amp;#xA0;ENGINE&amp;#xA0;global&lt;/span&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L16&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;16&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC16&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;span class=&quot;pl-v&quot;&gt;ENGINE&lt;/span&gt;&amp;#xA0;&lt;span class=&quot;pl-c1&quot;&gt;=&lt;/span&gt;&amp;#xA0;&lt;span class=&quot;pl-s1&quot;&gt;engine&lt;/span&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L17&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;17&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC17&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;span class=&quot;pl-c&quot;&gt;#Usando&amp;#xA0;la&amp;#xA0;funci&amp;#xF3;n&amp;#xA0;sessionmaker&amp;#xA0;y&amp;#xA0;como&amp;#xA0;par&amp;#xE1;metro&amp;#xA0;el&amp;#xA0;engine&amp;#xA0;se&amp;#xA0;crea&amp;#xA0;un&amp;#xA0;session_factory&lt;/span&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L18&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;18&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC18&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;span class=&quot;pl-s1&quot;&gt;session_factory&lt;/span&gt;&amp;#xA0;&lt;span class=&quot;pl-c1&quot;&gt;=&lt;/span&gt;&amp;#xA0;&lt;span class=&quot;pl-en&quot;&gt;sessionmaker&lt;/span&gt;(&lt;span class=&quot;pl-s1&quot;&gt;bind&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s1&quot;&gt;engine&lt;/span&gt;)&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L19&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;19&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC19&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;span class=&quot;pl-c&quot;&gt;#Usando&amp;#xA0;el&amp;#xA0;scoped_session&amp;#xA0;y&amp;#xA0;como&amp;#xA0;par&amp;#xE1;metro&amp;#xA0;el&amp;#xA0;session_factory&amp;#xA0;se&amp;#xA0;crea&amp;#xA0;la&amp;#xA0;conexi&amp;#xF3;n&amp;#xA0;maestra&lt;/span&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L20&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;20&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC20&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;span class=&quot;pl-c&quot;&gt;#la&amp;#xA0;conexi&amp;#xF3;n&amp;#xA0;maestra&amp;#xA0;se&amp;#xA0;declara&amp;#xA0;como&amp;#xA0;capital&amp;#xA0;porque&amp;#xA0;se&amp;#xA0;puede&amp;#xA0;invocar&amp;#xA0;como&amp;#xA0;funci&amp;#xF3;n&amp;#xA0;y&amp;#xA0;utilizar&amp;#xA0;como&amp;#xA0;tal&lt;/span&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L21&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;21&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC21&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;span class=&quot;pl-v&quot;&gt;Session&lt;/span&gt;&amp;#xA0;&lt;span class=&quot;pl-c1&quot;&gt;=&lt;/span&gt;&amp;#xA0;&lt;span class=&quot;pl-en&quot;&gt;scoped_session&lt;/span&gt;(&lt;span class=&quot;pl-s1&quot;&gt;session_factory&lt;/span&gt;)&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L22&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;22&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC22&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;span class=&quot;pl-k&quot;&gt;return&lt;/span&gt;&amp;#xA0;&lt;span class=&quot;pl-v&quot;&gt;Session&lt;/span&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L23&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;23&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC23&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&amp;#xA0;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L24&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;24&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC24&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#Diccionario&amp;#xA0;de&amp;#xA0;credenciales&amp;#xA0;para&amp;#xA0;la&amp;#xA0;DB&lt;/span&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L25&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;25&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC25&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#Este&amp;#xA0;diccionario&amp;#xA0;servir&amp;#xE1;&amp;#xA0;para&amp;#xA0;poder&amp;#xA0;pasar&amp;#xA0;las&amp;#xA0;credenciales&amp;#xA0;al&amp;#xA0;engine&amp;#xA0;de&amp;#xA0;la&amp;#xA0;funci&amp;#xF3;n&amp;#xA0;createConnectionDB&lt;/span&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L26&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;26&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC26&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-v&quot;&gt;CONF_DATABASE&lt;/span&gt;&amp;#xA0;&lt;span class=&quot;pl-c1&quot;&gt;=&lt;/span&gt;&amp;#xA0;{&lt;span class=&quot;pl-s&quot;&gt;&amp;quot;user&amp;quot;&lt;/span&gt;:&lt;span class=&quot;pl-s&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;,&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L27&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;27&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC27&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;span class=&quot;pl-s&quot;&gt;&amp;quot;pass&amp;quot;&lt;/span&gt;:&lt;span class=&quot;pl-s&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;,&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L28&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;28&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC28&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;span class=&quot;pl-s&quot;&gt;&amp;quot;host&amp;quot;&lt;/span&gt;:&lt;span class=&quot;pl-s&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;,&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L29&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;29&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC29&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;span class=&quot;pl-s&quot;&gt;&amp;quot;port&amp;quot;&lt;/span&gt;:&lt;span class=&quot;pl-s&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;,&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L30&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;30&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC30&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;span class=&quot;pl-s&quot;&gt;&amp;quot;dbname&amp;quot;&lt;/span&gt;:&lt;span class=&quot;pl-s&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L31&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;31&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC31&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;}&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L32&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;32&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC32&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#creamos&amp;#xA0;la&amp;#xA0;conexi&amp;#xF3;n&amp;#xA0;maestra&amp;#xA0;a&amp;#xA0;la&amp;#xA0;DB&amp;#xA0;utilizando&amp;#xA0;como&amp;#xA0;par&amp;#xE1;metro&amp;#xA0;el&amp;#xA0;diccionario&amp;#xA0;de&amp;#xA0;credenciales&lt;/span&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L33&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;33&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC33&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-v&quot;&gt;Session&lt;/span&gt;&amp;#xA0;&lt;span class=&quot;pl-c1&quot;&gt;=&lt;/span&gt;&amp;#xA0;&lt;span class=&quot;pl-en&quot;&gt;createConnectionDB&lt;/span&gt;(&lt;span class=&quot;pl-v&quot;&gt;CONF_DATABASE&lt;/span&gt;)&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L34&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;34&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC34&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#Con&amp;#xA0;esta&amp;#xA0;conexi&amp;#xF3;n&amp;#xA0;maestra&amp;#xA0;podemos&amp;#xA0;utilizarla&amp;#xA0;y&amp;#xA0;crear&amp;#xA0;m&amp;#xE1;s&amp;#xA0;conexiones&amp;#xA0;a&amp;#xA0;partir&amp;#xA0;de&amp;#xA0;esta&lt;/span&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L35&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;35&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC35&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-v&quot;&gt;Session&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;query&lt;/span&gt;()&amp;#xA0;&lt;span class=&quot;pl-c&quot;&gt;#se&amp;#xA0;corrobora&amp;#xA0;que&amp;#xA0;podemos&amp;#xA0;llamar&amp;#xA0;el&amp;#xA0;m&amp;#xE9;todo&amp;#xA0;query&amp;#xA0;que&amp;#xA0;es&amp;#xA0;particular&amp;#xA0;de&amp;#xA0;las&amp;#xA0;conexiones&lt;/span&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L36&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;36&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC36&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#Verificamos&amp;#xA0;el&amp;#xA0;tipo&amp;#xA0;de&amp;#xA0;conexi&amp;#xF3;n&lt;/span&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L37&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;37&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC37&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-en&quot;&gt;print&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;f&amp;quot;Sessi&amp;#xF3;n&amp;#xA0;padre&amp;#xA0;-&amp;gt;&amp;#xA0;{Session}&amp;quot;&lt;/span&gt;)&amp;#xA0;&lt;span class=&quot;pl-c&quot;&gt;#Imprimir&amp;#xE1;&amp;#xA0;scoped&lt;/span&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L38&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;38&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC38&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&amp;#xA0;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L39&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;39&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC39&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#Creamos&amp;#xA0;una&amp;#xA0;conexi&amp;#xF3;n&amp;#xA0;hijo&amp;#xA0;a&amp;#xA0;partir&amp;#xA0;de&amp;#xA0;la&amp;#xA0;conexi&amp;#xF3;n&amp;#xA0;maestra&lt;/span&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L40&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;40&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC40&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-s1&quot;&gt;session_child&lt;/span&gt;&amp;#xA0;&lt;span class=&quot;pl-c1&quot;&gt;=&lt;/span&gt;&amp;#xA0;&lt;span class=&quot;pl-v&quot;&gt;Session&lt;/span&gt;()&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L41&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;41&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC41&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#Con&amp;#xA0;esta&amp;#xA0;conexi&amp;#xF3;n&amp;#xA0;no&amp;#xA0;se&amp;#xA0;pueden&amp;#xA0;crear&amp;#xA0;m&amp;#xE1;s&amp;#xA0;conexiones&amp;#xA0;ser&amp;#xED;a&amp;#xA0;una&amp;#xA0;violaci&amp;#xF3;n&lt;/span&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L42&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;42&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC42&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-s1&quot;&gt;session_child&lt;/span&gt;.&lt;span class=&quot;pl-en&quot;&gt;query&lt;/span&gt;()&amp;#xA0;&lt;span class=&quot;pl-c&quot;&gt;#se&amp;#xA0;corrobora&amp;#xA0;que&amp;#xA0;podemos&amp;#xA0;llamar&amp;#xA0;el&amp;#xA0;m&amp;#xE9;todo&amp;#xA0;query&amp;#xA0;que&amp;#xA0;es&amp;#xA0;particular&amp;#xA0;de&amp;#xA0;las&amp;#xA0;conexiones&lt;/span&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;      &lt;tr&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-L43&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;43&quot;&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;        &lt;td id=&quot;file-sqlalchemy_session-py-LC43&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-en&quot;&gt;print&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;f&amp;quot;Sessi&amp;#xF3;n&amp;#xA0;hijo&amp;#xA0;-&amp;gt;&amp;quot;&lt;/span&gt;,&amp;#xA0;{&lt;span class=&quot;pl-s1&quot;&gt;session_child&lt;/span&gt;})&amp;#xA0;&lt;span class=&quot;pl-c&quot;&gt;#Imprimir&amp;#xE1;&amp;#xA0;session&lt;/span&gt;&lt;/td&gt;&lt;!--mce:protected %0A--&gt;      &lt;/tr&gt;&lt;!--mce:protected %0A--&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;!--mce:protected %0A--&gt;&lt;!--mce:protected %0A--&gt;&lt;!--mce:protected %0A--&gt;  &lt;/div&gt;&lt;!--mce:protected %0A--&gt;&lt;!--mce:protected %0A--&gt;  &lt;/div&gt;&lt;!--mce:protected %0A--&gt;&lt;/div&gt;&lt;!--mce:protected %0A--&gt;&lt;!--mce:protected %0A--&gt;      &lt;/div&gt;&lt;!--mce:protected %0A--&gt;      &lt;div class=&quot;gist-meta&quot;&gt;&lt;!--mce:protected %0A--&gt;        &lt;a href=&quot;https://gist.github.com/RumiSantins/65aa3600c0de832e8f0c5014b201d361/raw/d40029802f944a8f7724921d62aa340916c4c640/sqlalchemy_session.py&quot; style=&quot;float:right&quot;&gt;view raw&lt;/a&gt;&lt;!--mce:protected %0A--&gt;        &lt;a href=&quot;https://gist.github.com/RumiSantins/65aa3600c0de832e8f0c5014b201d361#file-sqlalchemy_session-py&quot;&gt;sqlalchemy_session.py&lt;/a&gt;&lt;!--mce:protected %0A--&gt;        hosted with &amp;#x2764; by &lt;a href=&quot;https://github.com&quot;&gt;GitHub&lt;/a&gt;&lt;!--mce:protected %0A--&gt;      &lt;/div&gt;&lt;!--mce:protected %0A--&gt;    &lt;/div&gt;&lt;!--mce:protected %0A--&gt;&lt;/div&gt;&lt;!--mce:protected %0A--&gt;&lt;/div&gt;

&lt;div data-embed=&quot;true&quot;&gt;&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>JavaScript -Tipos de datos</title>
        <link>https://fausto.app/notes/javascript-tipos-de-datos</link>
        <guid>https://fausto.app/notes/javascript-tipos-de-datos</guid>
        <pubDate>mié., 01 jul. 2020 14:27:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;&amp;#xA1;Hola! Estos son los tipos de datos b&amp;#xE1;sicos en JavaScript.&lt;/p&gt;
&lt;p&gt;JavaScript, a comparaci&amp;#xF3;n de muchos lenguajes de programaci&amp;#xF3;n, no intenta diferenciar los diferentes tipos de n&amp;#xFA;meros, como el punto flotante, enteros, etc.&lt;/p&gt;
&lt;h3&gt;Variables&lt;/h3&gt;
&lt;p&gt;&lt;br&gt;En JavaScript las variables son capaces de guardar gran variedad de datos, ya sean n&amp;#xFA;meros, arreglos, texto, etc.&lt;/p&gt;
&lt;p&gt;Ejemplo:&lt;/p&gt;
&lt;pre&gt;var fecha = 041202;&lt;/pre&gt;
&lt;p&gt;N&amp;#xFA;meros de punto flotante&lt;/p&gt;
&lt;p&gt;Ejemplo:&lt;/p&gt;
&lt;pre&gt;var flotante = 04.12;&lt;/pre&gt;
&lt;h3&gt;Cadenas de texto&lt;/h3&gt;
&lt;p&gt;&lt;br&gt;Capaces de guardar y manipular textos. Se puede incluir comillas dentro de la cadena de texto siempre y cuando no sea del mismo tipo que rodea la cadena de texto.&lt;/p&gt;
&lt;p&gt;Ejemplo:&lt;/p&gt;
&lt;pre&gt;var edad = &amp;apos;18&amp;apos;;&lt;br&gt;var nombre = &amp;quot;Mi nombre es &amp;apos;Felipe&amp;apos; &amp;quot;;&lt;br&gt;var persona = &amp;apos;\&amp;apos;soy una persona\&amp;apos; &amp;apos;;&lt;/pre&gt;
&lt;p&gt;Nota: La barra inversa(\) puede convertir los caracteres especiales en texto.&lt;/p&gt;
&lt;h3&gt;Booleanos&lt;/h3&gt;
&lt;p&gt;&lt;br&gt;En este lenguaje,&amp;#xA0; un booleano(tipo de dato l&amp;#xF3;gico) es donde s&amp;#xF3;lo puedes tener dos resultados: &amp;quot;false&amp;quot; o &amp;quot;true&amp;quot;.&lt;/p&gt;
&lt;p&gt;Ejemplo:&lt;/p&gt;
&lt;pre&gt;var isActive = true; &lt;br&gt;var isHoliday = false;&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Python - sqlacodegen - SQLAlchemy</title>
        <link>https://fausto.app/notes/python-sqlacodegen</link>
        <guid>https://fausto.app/notes/python-sqlacodegen</guid>
        <pubDate>vie., 26 jun. 2020 11:58:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;&lt;/p&gt;

&lt;p&gt;Hola!&lt;/p&gt;

&lt;p&gt;Continuando con librer&amp;#xED;as de Python, &lt;strong&gt;sqlacodegen&lt;/strong&gt; es una librer&amp;#xED;a que nos permite generar las classes desde una db para utilizarlas en el SQLAlchemy.&lt;/p&gt;

&lt;p&gt;Es simple! Primero instalamos la librer&amp;#xED;a:&lt;/p&gt;

&lt;pre&gt;pip install sqlacodegen&lt;/pre&gt;

&lt;p&gt;Luego configuramos el engine (cadena de conexi&amp;#xF3;n) para la DB respectiva.&amp;#xA0;&lt;br&gt;Para esto podremos 2 configuraciones, para MySQL y Postgres&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MySQL&lt;/strong&gt;&lt;br&gt;Las variables que empieza con $ deben ser reemplazadas con sus propios datos.&lt;br&gt;Cada cadena de conexi&amp;#xF3;n necesita que se instale la librer&amp;#xED;a dependiente. Por ejemplo para el MySQL necesitamos el &lt;strong&gt;pymysql&lt;/strong&gt;. Esto significa que adem&amp;#xE1;s de instalar &lt;strong&gt;sqlacoden&lt;/strong&gt;, debemos instalar &lt;strong&gt;pymysql&lt;/strong&gt;.&amp;#xA0;&lt;/p&gt;

&lt;p&gt;Se instalar&amp;#xE1; con el siguiente comando!&lt;/p&gt;

&lt;pre&gt;pip install pymysql&lt;/pre&gt;

&lt;p&gt;Luego ya teniendo claro ejecutamos el sqlacodegen&lt;/p&gt;

&lt;pre&gt;sqlacodegen mysql+pymysql://$usuario:$contrase&amp;#xF1;a@$ip:3306/$nombre_db&lt;/pre&gt;

&lt;p&gt;Postgres&lt;br&gt;Para postgres vamos a utilizar la librer&amp;#xED;a&amp;#xA0;&lt;span&gt;psycopg2&lt;/span&gt;&lt;/p&gt;

&lt;pre&gt;pip install&amp;#xA0;&lt;span&gt;psycopg2&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Entonces, ejecutamos&amp;#xA0;&lt;/p&gt;

&lt;pre&gt;sqlacodegen postgresql://$usuario:$contrase&amp;#xF1;a@$ip:5492/$nombre_db&lt;/pre&gt;

&lt;p&gt;Si necesitamos m&amp;#xE1;s tipos de cadenas de conexi&amp;#xF3;n o engine, podemos consultar la documentaci&amp;#xF3;n oficial de SQLAlchemy, ya que parte de ah&amp;#xED;.&lt;/p&gt;

&lt;div data-embed=&quot;true&quot;&gt;&lt;aside class=&quot;embed-card&quot;&gt;&lt;article&gt;&lt;/article&gt;&lt;footer&gt;&lt;img src=&quot;https://www.sqlalchemy.org/favicon.ico&quot; data-mce-src=&quot;https://www.sqlalchemy.org/favicon.ico&quot;&gt;&lt;a href=&quot;https://docs.sqlalchemy.org/en/13/core/engines.html&quot; data-mce-href=&quot;https://docs.sqlalchemy.org/en/13/core/engines.html&quot;&gt;docs.sqlalchemy.org&lt;/a&gt;&lt;/footer&gt;&lt;/aside&gt;&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Python PyMySQL</title>
        <link>https://fausto.app/notes/python-pymysql</link>
        <guid>https://fausto.app/notes/python-pymysql</guid>
        <pubDate>mar., 23 jun. 2020 11:31:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola!&lt;/p&gt;
&lt;p&gt;Hoy aprenderemos c&amp;#xF3;mo se utiliza pymysql para interactuar con la base de datos MySQL. Las variables que empiezan con $ deben ser reemplazadas con tus propios datos.&lt;/p&gt;
&lt;div data-embed=&quot;true&quot;&gt;&lt;script src=&quot;https://gist.github.com/richard24se/70d524b13872f0f001989be6a3a0662b.js&quot;&gt;&lt;/script&gt;&lt;/div&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Ansible AWX - Backup y Restore</title>
        <link>https://fausto.app/notes/ansible-awx-backup-y-restore</link>
        <guid>https://fausto.app/notes/ansible-awx-backup-y-restore</guid>
        <pubDate>lun., 26 ago. 2019 14:18:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;El backup y restore de Ansible AWX no es tan complicado si lo desplegaste con docker-compose!&lt;/p&gt;
&lt;p&gt;Sino a&amp;#xFA;n no lo haz hecho, qu&amp;#xE9; esperas!&lt;/p&gt;
&lt;p&gt;Revisa este link:&lt;/p&gt;
&lt;div data-embed=&quot;true&quot;&gt;&lt;aside class=&quot;embed-card&quot;&gt;&lt;article&gt;&lt;img src=&quot;https://fausto.app/uploads/2019/03/ansible-mini_.png&quot; data-mce-src=&quot;/uploads/2019/03/ansible-mini_.png&quot;&gt;&lt;h3&gt;&lt;a href=&quot;https://fausto.app/notes/awx-instalacion-de-ambiente-prd&quot; data-mce-href=&quot;/notes/awx-instalacion-de-ambiente-prd&quot;&gt;AWX instalaci&amp;#xF3;n de ambiente PRD con Docker en Centos 7&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Hola a todos!&amp;#xA0; En este art&amp;#xED;culo se ver&amp;#xE1; c&amp;#xF3;mo desplegar Ansible AWX el Open Source de Ansible Tower.&lt;/p&gt;&lt;/article&gt;&lt;footer&gt;&lt;img src=&quot;https://fausto.app/uploads/2019/01/devop_logo_1.png?thumbnail=256&amp;amp;key=97c49f839ecff98ab1dbc46a04a1444c7f429f03474c47914788ba68c0efb771&quot; data-mce-src=&quot;/uploads/2019/01/devop_logo_1.png?thumbnail=256&amp;amp;key=97c49f839ecff98ab1dbc46a04a1444c7f429f03474c47914788ba68c0efb771&quot;&gt;&lt;a href=&quot;https://fausto.app/notes/awx-instalacion-de-ambiente-prd&quot; data-mce-href=&quot;/notes/awx-instalacion-de-ambiente-prd&quot;&gt;El blog de Fausto&lt;/a&gt;&lt;/footer&gt;&lt;/aside&gt;&lt;/div&gt;
&lt;p&gt;Empezamos!&lt;/p&gt;
&lt;p&gt;1. Generamos el backup, esto puede ser programado con un crontab y enviarlo a un directorio m&amp;#xE1;s decente.&lt;/p&gt;
&lt;pre&gt;&lt;span&gt;docker &lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;exec&lt;/span&gt;&lt;span&gt; awx_postgres pg_dump -U awx -Fc awx &lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;`&lt;/span&gt;date +%m.%d.%y_%H.%M.%S&lt;span class=&quot;pl-pds&quot;&gt;`&lt;/span&gt;&lt;/span&gt;&lt;span&gt;_awx_db.dump&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;2. Apagamos los contenedores!&lt;/p&gt;
&lt;pre&gt;docker stop awx_task&lt;br&gt;docker stop awx_web&lt;br&gt;docker stop awx_memcached&lt;/pre&gt;
&lt;p&gt;3. Renombramos la base de datos actual por prevenci&amp;#xF3;n! ***IMPORTANTE***&lt;/p&gt;
&lt;pre&gt;&lt;span class=&quot;pl-s&quot;&gt;docker exec awx_postgres psql postgres awx -c &lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;ALTER DATABASE &lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;awx&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span&gt; RENAME TO &lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;awx_backup&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;4. Verificamos que se haya cambiado la base de datos:&lt;/p&gt;
&lt;pre&gt;&lt;span class=&quot;pl-s&quot;&gt;docker exec awx_postgres psql postgres awx -c &lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-cce&quot;&gt;\l&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;5. Realizamos el restore de la base de datos:&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;&lt;span&gt;docker exec -i awx_postgres pg_restore -U awx -C -d postgres &amp;lt; 08.26.19_12.56.05_awx_db.dump&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;6. Iniciamos los contenedores que hab&amp;#xED;amos detenido:&lt;/p&gt;
&lt;pre&gt;docker start awx_memcached&lt;br&gt;docker start awx_web&lt;br&gt;docker start awx_task&lt;/pre&gt;
&lt;p&gt;7. Verificamos que todo est&amp;#xE9; bien y procedemos a borrar la otra base de datos (s&amp;#xED; la que hab&amp;#xED;amos renombrado):&lt;/p&gt;
&lt;pre&gt;&lt;span class=&quot;pl-s&quot;&gt;docker exec awx_postgres psql postgres awx -c &lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;DROP DATABASE awx_backup&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;Espero te haya sido de utilidad!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Manejo de campos en SQLAlchemy</title>
        <link>https://fausto.app/notes/campos-en-sqlalchemy</link>
        <guid>https://fausto.app/notes/campos-en-sqlalchemy</guid>
        <pubDate>vie., 23 ago. 2019 13:53:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola!&lt;/p&gt;
&lt;p&gt;Un problema com&amp;#xFA;n cuando se utiliza el ORM SQLAlchemy para Python es la declaraci&amp;#xF3;n de campos, se hace desordenada y compleja de mantener. Para esto realic&amp;#xE9; un m&amp;#xE9;todo (pieza de c&amp;#xF3;digo) que s&amp;#xF3;lo enviando los campos asociados te genera un arreglo de los campos del modelo. Rev&amp;#xED;salo!&lt;/p&gt;
&lt;div data-embed=&quot;true&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;https://github.githubassets.com/assets/gist-embed-4ac6018bcc05457cde2f66d2e7299d11.css&quot;&gt;
&lt;div id=&quot;gist97927024&quot; class=&quot;gist&quot;&gt;  &lt;div class=&quot;gist-file&quot;&gt;    &lt;div class=&quot;gist-data&quot;&gt;      &lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;&lt;div id=&quot;file-getfieldssqlalchemy-py&quot; class=&quot;file&quot;&gt;  &lt;div itemprop=&quot;text&quot; class=&quot;Box-body p-0 blob-wrapper data type-python &quot;&gt;    &lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot;&gt;    &lt;tbody&gt;&lt;tr&gt;      &lt;td id=&quot;file-getfieldssqlalchemy-py-L1&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-getfieldssqlalchemy-py-LC1&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt;METHOD TO GET FIELDS FROM MODEL&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-getfieldssqlalchemy-py-L2&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-getfieldssqlalchemy-py-LC2&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;get_fields_sqlalch&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;&lt;span class=&quot;pl-smi&quot;&gt;self&lt;/span&gt;&lt;/span&gt;,&lt;span class=&quot;pl-smi&quot;&gt;cols&lt;/span&gt;,&lt;span class=&quot;pl-smi&quot;&gt;model&lt;/span&gt;):&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-getfieldssqlalchemy-py-L3&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-getfieldssqlalchemy-py-LC3&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-k&quot;&gt;return&lt;/span&gt; [model.&lt;span class=&quot;pl-c1&quot;&gt;__dict__&lt;/span&gt;[k] &lt;span class=&quot;pl-k&quot;&gt;for&lt;/span&gt; k &lt;span class=&quot;pl-k&quot;&gt;in&lt;/span&gt; cols]&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-getfieldssqlalchemy-py-L4&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-getfieldssqlalchemy-py-LC4&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt;USE METHOD&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-getfieldssqlalchemy-py-L5&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-getfieldssqlalchemy-py-LC5&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;fields &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; get_fields_sqlalch([&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;campo1&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;,&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;campo2&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;],ColaboradorModel) &lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-getfieldssqlalchemy-py-L6&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;6&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-getfieldssqlalchemy-py-LC6&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-getfieldssqlalchemy-py-L7&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;7&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-getfieldssqlalchemy-py-LC7&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt;APPLY FIELDS TO QUERY&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-getfieldssqlalchemy-py-L8&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;8&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-getfieldssqlalchemy-py-LC8&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;result &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; [o._asdict() &lt;span class=&quot;pl-k&quot;&gt;for&lt;/span&gt; o &lt;span class=&quot;pl-k&quot;&gt;in&lt;/span&gt; s.query(&lt;span class=&quot;pl-k&quot;&gt;*&lt;/span&gt;fields)]&lt;/td&gt;    &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;    &lt;/div&gt;    &lt;div class=&quot;gist-meta&quot;&gt;      &lt;a href=&quot;https://gist.github.com/richard24se/e3c5b6fc6796bf121b96eda7e43777c3/raw/f2a2a628006f728a7a824e74aeb4e4424324b61a/getFieldsSQLAlchemy.py&quot; style=&quot;float:right&quot;&gt;view raw&lt;/a&gt;      &lt;a href=&quot;https://gist.github.com/richard24se/e3c5b6fc6796bf121b96eda7e43777c3#file-getfieldssqlalchemy-py&quot;&gt;getFieldsSQLAlchemy.py&lt;/a&gt;      hosted with &amp;#x2764; by &lt;a href=&quot;https://github.com&quot;&gt;GitHub&lt;/a&gt;    &lt;/div&gt;  &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&amp;#xA0;&amp;#xA0;&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Desplegar NFS con Docker en Linux</title>
        <link>https://fausto.app/notes/docker-nfs</link>
        <guid>https://fausto.app/notes/docker-nfs</guid>
        <pubDate>jue., 25 jul. 2019 14:13:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola! Si necesitas utilizar el servicio NFS con Docker, sigue este art&amp;#xED;culo, ver&amp;#xE1;s los sencillos pasos y recetas para lograrlo.&lt;/p&gt;



&lt;p&gt;Estas instrucciones son v&amp;#xE1;lidas y probadas en Centos7&lt;/p&gt;



&lt;p&gt;Primero debes deshabilitar los puerto nativos que utiliza el NFS en tu OS&lt;/p&gt;




&lt;pre&gt;#Se puede pagar&lt;br&gt;sudo systemctl stop rpcbind&lt;br&gt;sudo systemctl stop rpcbind.socket&lt;br&gt;sudo systemctl stop nfs-server&lt;br&gt;sudo systemctl stop nfs-lock&lt;br&gt;sudo systemctl stop nfs-idmap&lt;br&gt;&lt;br&gt;#O tambi&amp;#xE9;n deshabilitar&lt;br&gt;sudo systemctl disable rpcbind&lt;br&gt;sudo systemctl disable rpcbind.socket&lt;br&gt;sudo systemctl disable nfs-server&lt;br&gt;sudo systemctl disable nfs-lock&lt;br&gt;sudo systemctl disable nfs-idmap&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/pre&gt;



&lt;p&gt;Luego clonamos el siguiente repositorio&lt;/p&gt;

&lt;div data-embed=&quot;true&quot;&gt;&lt;aside class=&quot;embed-card&quot;&gt;&lt;article&gt;&lt;img src=&quot;https://avatars3.githubusercontent.com/u/23709655?s=400&amp;amp;v=4&quot; data-mce-src=&quot;https://avatars3.githubusercontent.com/u/23709655?s=400&amp;amp;v=4&quot;&gt;&lt;h3&gt;&lt;a href=&quot;https://github.com/richard24se/nfs-docker&quot; data-mce-href=&quot;https://github.com/richard24se/nfs-docker&quot;&gt;richard24se/nfs-docker&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Contribute to richard24se/nfs-docker development by creating an account on GitHub.&lt;/p&gt;&lt;/article&gt;&lt;footer&gt;&lt;img src=&quot;https://github.githubassets.com/favicons/favicon.svg&quot; data-mce-src=&quot;https://github.githubassets.com/favicons/favicon.svg&quot;&gt;&lt;a href=&quot;https://github.com/richard24se/nfs-docker&quot; data-mce-href=&quot;https://github.com/richard24se/nfs-docker&quot;&gt;GitHub&lt;/a&gt;&lt;/footer&gt;&lt;/aside&gt;&lt;/div&gt;




&lt;pre&gt;git clone https://github.com/richard24se/nfs-docker.git&lt;/pre&gt;

&lt;p&gt;Editamos el YML docker-compose.yml con nuestros datos&lt;/p&gt;

&lt;div&gt;
&lt;pre&gt;&lt;span&gt;version&lt;/span&gt;&lt;span&gt;:&amp;#xA0;&lt;/span&gt;&lt;span&gt;&amp;quot;3&amp;quot;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span&gt;services&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;br&gt;&lt;span&gt;&amp;#xA0;&amp;#xA0;&lt;/span&gt;&lt;span&gt;nfs&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;br&gt;&lt;span&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;/span&gt;&lt;span&gt;image&lt;/span&gt;&lt;span&gt;:&amp;#xA0;&lt;/span&gt;&lt;span&gt;nfs-centos&lt;/span&gt;&lt;span&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;/span&gt;&lt;br&gt;&lt;span&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;/span&gt;&lt;span&gt;build&lt;/span&gt;&lt;span&gt;:&amp;#xA0;&lt;/span&gt;&lt;br&gt;&lt;span&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;/span&gt;&lt;span&gt;context&lt;/span&gt;&lt;span&gt;:&amp;#xA0;&lt;/span&gt;&lt;span&gt;./nfs/&lt;/span&gt;&lt;br&gt;&lt;span&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;/span&gt;&lt;span&gt;dockerfile&lt;/span&gt;&lt;span&gt;:&amp;#xA0;&lt;/span&gt;&lt;span&gt;./Dockerfile&lt;/span&gt;&lt;br&gt;&lt;span&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;/span&gt;&lt;span&gt;#Args&amp;#xA0;to&amp;#xA0;build&amp;#xA0;docker&amp;#xA0;image,&amp;#xA0;if&amp;#xA0;change&amp;#xA0;please&amp;#xA0;build&amp;#xA0;again&lt;/span&gt;&lt;br&gt;&lt;span&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;/span&gt;&lt;span&gt;args&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;br&gt;&lt;span&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;/span&gt;&lt;span&gt;#Shared&amp;#xA0;Folder,&amp;#xA0;which&amp;#xA0;will&amp;#xA0;be&amp;#xA0;shared&amp;#xA0;like&amp;#xA0;a&amp;#xA0;NFS&amp;#xA0;Resources&lt;/span&gt;&lt;br&gt;&lt;span&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;/span&gt;&lt;span&gt;shared_folder&lt;/span&gt;&lt;span&gt;:&amp;#xA0;&lt;/span&gt;&lt;span&gt;&amp;quot;/test-folder-nfs1&amp;#xA0;/test-folder-nfs2&amp;quot;&lt;/span&gt;&lt;br&gt;&lt;span&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;/span&gt;&lt;span&gt;#Shared&amp;#xA0;IP,&amp;#xA0;which&amp;#xA0;can&amp;#xA0;be&amp;#xA0;access&amp;#xA0;to&amp;#xA0;NFS&amp;#xA0;resources&lt;/span&gt;&lt;br&gt;&lt;span&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;/span&gt;&lt;span&gt;shared_ip&lt;/span&gt;&lt;span&gt;:&amp;#xA0;&lt;/span&gt;&lt;span&gt;&amp;quot;192.168.1.24&amp;quot;&lt;/span&gt;&lt;br&gt;&lt;span&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;/span&gt;&lt;span&gt;privileged&lt;/span&gt;&lt;span&gt;:&amp;#xA0;&lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;br&gt;&lt;span&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;/span&gt;&lt;span&gt;container_name&lt;/span&gt;&lt;span&gt;:&amp;#xA0;&lt;/span&gt;&lt;span&gt;nfs-centos&lt;/span&gt;&lt;br&gt;&lt;span&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;/span&gt;&lt;span&gt;#Mapping&amp;#xA0;volumes&amp;#xA0;that&amp;#xA0;will&amp;#xA0;be&amp;#xA0;become&amp;#xA0;in&amp;#xA0;shared&amp;#xA0;folder&lt;/span&gt;&lt;br&gt;&lt;span&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;/span&gt;&lt;span&gt;volumes&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;br&gt;&lt;span&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;-&amp;#xA0;&lt;/span&gt;&lt;span&gt;/tmp/test-folder-nfs1:/test-folder-nfs1&lt;/span&gt;&lt;br&gt;&lt;span&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;-&amp;#xA0;&lt;/span&gt;&lt;span&gt;/tmp/test-folder-nfs2:/test-folder-nfs2&lt;/span&gt;&lt;br&gt;&lt;span&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;/span&gt;&lt;span&gt;ports&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;br&gt;&lt;span&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;-&amp;#xA0;&lt;/span&gt;&lt;span&gt;&amp;quot;2049:2049&amp;quot;&lt;/span&gt;&lt;br&gt;&lt;span&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;-&amp;#xA0;&lt;/span&gt;&lt;span&gt;&amp;quot;111:111/udp&amp;quot;&lt;/span&gt;&lt;br&gt;&lt;span&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;-&amp;#xA0;&lt;/span&gt;&lt;span&gt;&amp;quot;111:111/tcp&amp;quot;&lt;/span&gt;&lt;br&gt;&lt;span&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;-&amp;#xA0;&lt;/span&gt;&lt;span&gt;&amp;quot;20048:20048/udp&amp;quot;&lt;/span&gt;&lt;br&gt;&lt;span&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;-&amp;#xA0;&lt;/span&gt;&lt;span&gt;&amp;quot;20048:20048/tcp&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;/span&gt;&lt;br&gt;&lt;span&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;/span&gt;&lt;span&gt;restart&lt;/span&gt;&lt;span&gt;:&amp;#xA0;&lt;/span&gt;&lt;span&gt;always&lt;/span&gt;&lt;br&gt;&lt;span&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&lt;/span&gt;&lt;span&gt;command&lt;/span&gt;&lt;span&gt;:&amp;#xA0;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span&gt;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;&amp;#xA0;bash&amp;#xA0;-c&amp;#xA0;&amp;quot;exec&amp;#xA0;/sbin/init&amp;#xA0;&amp;amp;&amp;amp;&amp;#xA0;showmount&amp;#xA0;-e&amp;#xA0;127.0.0.1&amp;#xA0;&amp;amp;&amp;amp;&amp;#xA0;sleep&amp;#xA0;infinity&amp;quot;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;&lt;span&gt;En los argumentos para el build modificamos los siguientes:&lt;/span&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;span&gt;shared_folder: ubicamos las carpetas que hemos mapeado al contenedor, puede ser una o pueden ser varias, es decir las carpetas que publicar&amp;#xE1; el NFS&lt;/span&gt;&lt;/li&gt;

&lt;li&gt;&lt;span&gt;shared_ip: escribimos las ips que tendr&amp;#xE1;n acceso a las carpetas del NFS&lt;/span&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;/div&gt;



&lt;p&gt;Luego de personalizar el docker-compose.yml, lo levantamos con el siguiente comando:&lt;/p&gt;

&lt;pre&gt;docker-compose up&lt;/pre&gt;
&lt;p&gt;Del lado de los clientes debemos instalar el cliente NFS, en este caso asumiremos que es Centos7, as&amp;#xED; que instalaremos con la siguiente l&amp;#xED;nea de comando:&lt;/p&gt;
&lt;pre&gt;yum install nfs-utils -y&lt;/pre&gt;


&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Instalación y configuración de Docker Swarm</title>
        <link>https://fausto.app/notes/instalacion-y-configuracion-de-docker-swarm</link>
        <guid>https://fausto.app/notes/instalacion-y-configuracion-de-docker-swarm</guid>
        <pubDate>lun., 24 jun. 2019 09:52:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola!&lt;/p&gt;
&lt;p&gt;Para el escenario imaginemos que tenemos 2 servidores SWARM-MASTER01 y SWARM-MASTER02. Apliquemos los comando acorde el TAG&lt;/p&gt;
&lt;p&gt;Antes de empezar, aseguremos las reglas de Firewall en cada servidor!&lt;/p&gt;
&lt;pre&gt;firewall-cmd --add-port=2376/tcp --permanent&lt;br&gt;firewall-cmd --add-port=2377/tcp --permanent&lt;br&gt;firewall-cmd --add-port=7946/tcp --permanent&lt;br&gt;firewall-cmd --add-port=7946/udp --permanent&lt;br&gt;firewall-cmd --add-port=4789/udp --permanent&lt;br&gt;&lt;br&gt;firewall-cmd --reload&lt;/pre&gt;
&lt;pre&gt;#---------&amp;gt;SWARM-MASTER01&amp;lt;---------#&lt;br&gt;#INICIALIZACI&amp;#xD3;N &lt;br&gt;docker swarm init&lt;br&gt;#MOSTRAR TOKEN PARA UNIR MANAGER&lt;br&gt;docker swarm join-token manager&lt;br&gt;#MOSTRAR TOKEN PARA UNIR WORKER&lt;br&gt;docker swarm join-token worker&lt;br&gt;&lt;br&gt;&lt;/pre&gt;
&lt;p&gt;Mostrar&amp;#xE1;n los siguientes outputs:&lt;/p&gt;
&lt;pre&gt;docker swarm join --token $TOKEN $IP_SWARM-MASTER01:2377&lt;/pre&gt;
&lt;p&gt;Luego&amp;#xA0; con ese comando generado lo aplicamos en el SWARM-MASTER02&lt;/p&gt;
&lt;p&gt;Despu&amp;#xE9;s para validar se ejecuta lo siguiente:&lt;/p&gt;
&lt;pre&gt;#---------&amp;gt;SWARM-MASTER01&amp;lt;---------#&lt;br&gt;docker node ls&lt;/pre&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Docker Install &amp; Compose en Centos 7, 8, stream 8</title>
        <link>https://fausto.app/notes/docker-install-and-compose</link>
        <guid>https://fausto.app/notes/docker-install-and-compose</guid>
        <pubDate>lun., 24 jun. 2019 09:46:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Instalaci&amp;#xF3;n de Docker y Docker-compose&lt;/p&gt;

&lt;pre&gt;#DOCKER CE&lt;br&gt;sudo yum install -y yum-utils device-mapper-persistent-data lvm2&lt;br&gt;sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo&lt;br&gt;sudo yum install -y docker-ce&lt;br&gt;sudo usermod -aG docker $(whoami)&lt;br&gt;sudo systemctl enable docker.service&lt;br&gt;sudo systemctl start docker.service&lt;br&gt;&lt;br&gt;#DOCKER-COMPOSE OUTDATE&lt;br&gt;sudo yum install -y epel-release&lt;br&gt;sudo yum install -y python-pip&lt;br&gt;sudo pip install docker-compose&lt;br&gt;sudo yum upgrade python*&lt;br&gt;docker-compose version&lt;br&gt;&lt;br&gt;#DOCKER-COMPOSE NEW VERSION&lt;br&gt;sudo yum install -y epel-release&lt;br&gt;sudo yum install -y python3-pip python3-devel gcc python3&lt;br&gt;sudo pip3 install --upgrade pip&lt;br&gt;sudo pip3 install docker-compose&lt;br&gt;docker-compose version&lt;/pre&gt;
&lt;p&gt;Troubleshooting&lt;/p&gt;
&lt;p&gt;Problemas con Centos8 y Cryptography&lt;/p&gt;
&lt;div data-embed=&quot;true&quot;&gt;&lt;aside class=&quot;embed-card&quot;&gt;&lt;article&gt;&lt;/article&gt;&lt;footer&gt;&lt;a href=&quot;https://cryptography.io/en/latest/installation/#fedora-rhel-8-centos-8&quot;&gt;cryptography.io&lt;/a&gt;&lt;/footer&gt;&lt;/aside&gt;&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Docker private registry</title>
        <link>https://fausto.app/notes/docker-private-registry</link>
        <guid>https://fausto.app/notes/docker-private-registry</guid>
        <pubDate>jue., 20 jun. 2019 08:05:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Se explicar&amp;#xE1; c&amp;#xF3;mo levantar un docker private registry!&lt;/p&gt;
&lt;p&gt;Primero se levanta el contenedor que servir&amp;#xE1; el registry privado&lt;/p&gt;


&lt;pre&gt;#------------&amp;gt; SERVIDOR QUE TENDR&amp;#xC1; EL CONTENEDOR DEL PRIVATE REGISTRY&amp;lt;---------------#&lt;br&gt;#SE CREA PRIMERO EL CONTENEDOR&lt;br&gt;docker run &lt;span class=&quot;nt&quot;&gt;-d&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-p&lt;/span&gt; 7000:5000 &lt;span class=&quot;nt&quot;&gt;--restart&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;always &lt;span class=&quot;nt&quot;&gt;--name&lt;/span&gt; registry registry:2&lt;/pre&gt;
&lt;p&gt;Para que los servidores que usar&amp;#xE1;n el registry se configura la siguiente l&amp;#xED;nea en el docker.&lt;/p&gt;
&lt;pre&gt;#------------&amp;gt; SERVIDORES QUE USAR&amp;#xC1;N EL PRIVATE REGISTRY&amp;lt;---------------#&lt;br&gt;sudo echo &amp;apos;{&amp;quot;insecure-registries&amp;quot;: [&amp;quot;$IP_REGISTRY:7000&amp;quot;]}&amp;apos; | sudo tee /etc/docker/daemon.json&lt;br&gt;sudo service docker restart&lt;/pre&gt;
&lt;p&gt;Agregar el puerto 7000 al firewall&lt;/p&gt;

&lt;pre&gt;firewall-cmd --add-port=7000/tcp --permanent&lt;br&gt;firewall-cmd --reload&lt;br&gt;firewall-cmd --state&lt;br&gt;systemctl status firewalld &lt;/pre&gt;

&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;Para hacer el tag con el registry privado se puede utilizar el siguiente comando&lt;/p&gt;
&lt;pre&gt;#------------&amp;gt; SERVIDOR QUE NECESITE CREAR IM&amp;#xC1;GENES&amp;lt;---------------#&lt;br&gt;docker tag $NOMBRE_IMAGEN $IP_REGISTRY:7000/$NOMBRE_IMAGEN:$VERSION&lt;/pre&gt;

&lt;p&gt;&amp;#xA0;Para hacer el push al registry privado se puede utilizar el siguiente comando&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;pre&gt;#------------&amp;gt; SERVIDOR QUE NECESITE CREAR IM&amp;#xC1;GENES&amp;lt;---------------#&lt;br&gt;docker push $IP_REGISTRY:7000/$NOMBRE_IMAGEN:$VERSION&lt;/pre&gt;
&lt;p&gt;

&lt;/p&gt;

&lt;hr&gt;
&lt;p&gt;Para manejar mejor esto tenemos el docker-compose:&lt;/p&gt;

&lt;div&gt;
&lt;pre&gt;version: &amp;apos;3&amp;apos;&lt;br&gt;services:&lt;br&gt; registry:&lt;br&gt; image: registry:2&lt;br&gt; restart: always&lt;br&gt; environment:&lt;br&gt;   REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data&lt;br&gt; volumes:&lt;br&gt;   - /gestagro/docker_registry_data:/data&lt;br&gt;&lt;code&gt; restart: always&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Docker Compose - Tipos de Volúmenes</title>
        <link>https://fausto.app/notes/docker-compose-tipos-de-volumenes</link>
        <guid>https://fausto.app/notes/docker-compose-tipos-de-volumenes</guid>
        <pubDate>vie., 10 may. 2019 09:54:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola!&lt;/p&gt;
&lt;p&gt;Un tema a discusi&amp;#xF3;n en los vol&amp;#xFA;menes de Docker, utilizando Compose, son sus tipos. Algo a veces un poco confuso, pero que si lo tenemos claro resulta muy &amp;#xFA;til. Comparto este fragmento de la documentaci&amp;#xF3;n oficial:&lt;/p&gt;
&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;na&quot;&gt;volumes&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;c1&quot;&gt;# Just specify a path and let the Engine create a volume&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;/var/lib/mysql&lt;/span&gt;

  &lt;span class=&quot;c1&quot;&gt;# Specify an absolute path mapping&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;/opt/data:/var/lib/mysql&lt;/span&gt;

  &lt;span class=&quot;c1&quot;&gt;# Path on the host, relative to the Compose file&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;./cache:/tmp/cache&lt;/span&gt;

  &lt;span class=&quot;c1&quot;&gt;# User-relative path&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;~/configs:/etc/configs/:ro&lt;/span&gt;

  &lt;span class=&quot;c1&quot;&gt;# Named volume&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;datavolume:/var/lib/mysql&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span class=&quot;s&quot;&gt;Fuente:&amp;#xA0;&lt;a href=&quot;https://docs.docker.com/compose/compose-file/&quot;&gt;https://docs.docker.com/compose/compose-file/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;#xA0;&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Administrar Docker desde una web!</title>
        <link>https://fausto.app/notes/administrador-docker-desde-una-web</link>
        <guid>https://fausto.app/notes/administrador-docker-desde-una-web</guid>
        <pubDate>mié., 27 mar. 2019 14:38:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola!&lt;/p&gt;

&lt;p&gt;Docker es una herramienta DevOps muy &amp;#xF3;ptima para el despliegue de aplicaciones. Su mayor valor es la eficiencia de uso del Hardware designado.&amp;#xA0;&lt;/p&gt;

&lt;p&gt;Con portainer se podr&amp;#xE1; administrar todo cualquier Docker y sus contenedores respectivamente. Para esto s&amp;#xF3;lo se necesita utilizar los siguientes comandos:&lt;/p&gt;

&lt;pre&gt;docker volume create portainer_data &lt;br&gt;#Windows&lt;br&gt;docker run -d -p 8000:9000 --name portainer --restart always -v \\.\pipe\docker_engine:\\.\pipe\docker_engine -v portainer_data:C:\data portainer/portainer&lt;br&gt;#Linux&lt;br&gt;docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer&lt;/pre&gt;

&lt;p&gt;Luego se ingresa al panel web $IP:9000 desde un explorador web.&lt;/p&gt;

&lt;figure class=&quot;image align-center&quot;&gt;&lt;img src=&quot;https://fausto.app/uploads/2019/03/portainer.PNG&quot; srcset=&quot;/uploads/2019/03/portainer.PNG?width=200&amp;amp;key=fbdd04b69f3e5e75649dd5e124d05e4af3e4a438f5b065f2444275b68df02deb 200w, /uploads/2019/03/portainer.PNG?width=400&amp;amp;key=da18a968eba3fa0a9293caf33fc51c5d3978324a5ed182cab190a3e88cdea7d5 400w, /uploads/2019/03/portainer.PNG?width=600&amp;amp;key=e4897dd78d32063edf4997234eb22c0d870fa5a9858f800d441bc60b02f137ec 600w, /uploads/2019/03/portainer.PNG?width=800&amp;amp;key=768e3a2f53b08e0800b82ea91fad3529dde99a8df2024197be7f45575625307d 800w, /uploads/2019/03/portainer.PNG?width=1000&amp;amp;key=0722d7f01264cffaed23dcf0546573591e818aefbc7f937a515c3323b0c536fe 1000w, /uploads/2019/03/portainer.PNG?width=1200&amp;amp;key=be8ff604494cdd73abf57302607868d64ec44fcc62443ca2bf5885714cad84a8 1200w&quot;&gt;&lt;/figure&gt;

&lt;p&gt;El cual es muy interesante, tiene muchas opciones &amp;#xFA;tiles. Para los que ya han usado la cli de docker, gestionar por medio de este portal ser&amp;#xE1; sumamente sencillo.&lt;/p&gt;
&lt;p&gt;Si tenemos un ambiente con Swarm, recomiendo utilizar el siguiente .yml&lt;/p&gt;
&lt;pre&gt;version: &amp;apos;3.2&amp;apos;&lt;br&gt;&lt;br&gt;services:&lt;br&gt; agent:&lt;br&gt;   image: portainer/agent&lt;br&gt;   environment:&lt;br&gt;     AGENT_CLUSTER_ADDR: tasks.agent&lt;br&gt;   volumes:&lt;br&gt;    - /var/run/docker.sock:/var/run/docker.sock&lt;br&gt;    - /var/lib/docker/volumes:/var/lib/docker/volumes&lt;br&gt;   ports:&lt;br&gt;    - target: 9001&lt;br&gt;      published: 9001&lt;br&gt;      protocol: tcp&lt;br&gt;      mode: host&lt;br&gt;   networks:&lt;br&gt;    - portainer_agent&lt;br&gt;   deploy:&lt;br&gt;     mode: global&lt;br&gt;   placement:&lt;br&gt;     constraints: [node.platform.os == linux]&lt;br&gt;&lt;br&gt;networks:&lt;br&gt; portainer_agent:&lt;br&gt;   driver: overlay&lt;br&gt;   attachable: true&lt;/pre&gt;

&lt;p&gt;Luego de crear este archivo lo desplegamos con el siguiente comando&lt;/p&gt;
&lt;pre&gt;docker stack deploy --compose-file=agent-stack.yml portainer-agent&lt;/pre&gt;
&lt;p&gt;En caso de que desees agregar un host remoto a tu portainer local, debes instalar el agente en el host remoto. Si es Swarm, el anterior es de ayuda, pero sino lo es. Utiliza el siguiente:&lt;/p&gt;
&lt;pre&gt;docker run -d -p 9001:9001 --name portainer_agent --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker/volumes:/var/lib/docker/volumes portainer/agent&lt;/pre&gt;
&lt;p&gt;En ambos casos se dejar&amp;#xE1; expuesto el puerto 9001, el cual usaremos cuando conectemos a nuestro portainer local.&lt;/p&gt;
&lt;p&gt;Adi&amp;#xF3;s!&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Conectarse a TFS 2018 desde plataforma no Windows</title>
        <link>https://fausto.app/notes/conectarse-a-tfs-2018-desde-plataforma-no-windows</link>
        <guid>https://fausto.app/notes/conectarse-a-tfs-2018-desde-plataforma-no-windows</guid>
        <pubDate>mar., 19 mar. 2019 17:31:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola!&lt;/p&gt;
&lt;p&gt;Cuando se necesita realizar un git clone desde un ambiente no windows&lt;/p&gt;
&lt;pre&gt;git clone http://$USUARIO:$CONTRASE&amp;#xD1;A@$ENLACE_GIT_TFS&lt;/pre&gt;
&lt;p&gt;Luego de eso presenta el siguiente error:&lt;/p&gt;
&lt;pre&gt;fatal: Authentication failed for &amp;apos;http://$USUARIO:$CONTRASE&amp;#xD1;A@$ENLACE_GIT_TFS&lt;/pre&gt;
&lt;p&gt;Para corregir esto es necesario configurar el NTLM en el TFS 2018. Ya que con Kerberos no permite conectarse.&lt;/p&gt;
&lt;pre&gt;C:\Program Files\Microsoft Team Foundation Server 2018\Tools&amp;gt;TFSConfig Authentication /provider:NTLM /siteType:ApplicationTier&lt;/pre&gt;
&lt;p&gt;Eso es todo!&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>AWX instalación de ambiente PRD con Docker en Centos 7</title>
        <link>https://fausto.app/notes/awx-instalacion-de-ambiente-prd</link>
        <guid>https://fausto.app/notes/awx-instalacion-de-ambiente-prd</guid>
        <pubDate>vie., 15 mar. 2019 08:54:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola a todos!&amp;#xA0;&lt;/p&gt;
&lt;p&gt;En este art&amp;#xED;culo se ver&amp;#xE1; c&amp;#xF3;mo desplegar Ansible AWX el Open Source de Ansible Tower.&lt;/p&gt;
&lt;p&gt;Requerimientos para Centos 7:&lt;/p&gt;
&lt;p&gt;1. Actualizar el OS&lt;/p&gt;
&lt;pre&gt;yum update&lt;/pre&gt;
&lt;p&gt;2. Instalar el epel-realease&lt;/p&gt;
&lt;pre&gt;yum install epel-release&amp;#xA0;-y&amp;#xA0;&lt;br&gt;o&lt;br&gt;&lt;span class=&quot;hljs-attribute&quot;&gt;yum&lt;/span&gt; install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm -y&lt;/pre&gt;
&lt;p&gt;3. Instalar paquetes necesarios&lt;/p&gt;
&lt;pre&gt;yum install ansible git nodejs npm python-devel python-pip python-docker-py vim-enhanced yum-utils device-mapper-persistent-data lvm2 -y&lt;br&gt;yum groupinstall &amp;apos;Development Tools&amp;apos; -y&lt;br&gt;pip install docker --upgrade&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/pre&gt;
&lt;p&gt;4. Configurar el docker-ce&lt;/p&gt;
&lt;pre&gt;yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo&lt;/pre&gt;
&lt;p&gt;5. Instalar el docker-ce&lt;/p&gt;
&lt;pre&gt;yum install docker-ce -y&lt;/pre&gt;
&lt;p&gt;6. Iniciar y habilitar docker&lt;/p&gt;
&lt;pre&gt;systemctl start docker &amp;amp; systemctl enable docker&lt;/pre&gt;
&lt;p&gt;7. Clonar AWX&lt;/p&gt;
&lt;pre&gt;git clone https://github.com/ansible/awx.git&lt;br&gt;cd awx/&lt;br&gt;git clone https://github.com/ansible/awx-logos.git&lt;br&gt;pwd&lt;/pre&gt;
&lt;p&gt;8. Configurar inventario&lt;/p&gt;
&lt;pre&gt;cd installer/&lt;br&gt;vim inventory&lt;br&gt;&lt;br&gt;#INVENTORY FILE&lt;br&gt;postgres_data_dir=/var/lib/pgdocker&lt;br&gt;awx_official=true&lt;br&gt;awx_alternate_dns_servers=&amp;quot;4.2.2.1,4.2.2.2&amp;quot;&lt;br&gt;project_data_dir=/var/lib/awx/projects&lt;/pre&gt;
&lt;p&gt;Esto tambi&amp;#xE9;n se puede hacer con el comando sed:&lt;/p&gt;
&lt;pre&gt;cd installer/&lt;br&gt;sed -i &amp;apos;s#postgres_data_dir=.*#postgres_data_dir=/var/lib/pgdocker#g&amp;apos; inventory&lt;br&gt;sed -i &amp;apos;s#awx_official=.*#awx_official=true#g&amp;apos; inventory&lt;br&gt;sed -i &amp;apos;s#awx_alternate_dns_servers=.*#awx_alternate_dns_servers=&amp;quot;8.8.8.8,8.8.4.4&amp;quot;#g&amp;apos; inventory&lt;br&gt;sed -i &amp;apos;s#project_data_dir=.*#project_data_dir=/var/lib/awx/projects#g&amp;apos; inventory&lt;/pre&gt;
&lt;p&gt;9. Verificar la configuraci&amp;#xF3;n:&lt;/p&gt;
&lt;pre&gt;cat inventory |grep -v &amp;quot;#&amp;quot;&lt;br&gt;&lt;br&gt;#INVENTORY FILE&lt;br&gt;&lt;br&gt;dockerhub_base=ansible&lt;br&gt;dockerhub_version=latest&lt;br&gt;rabbitmq_version=3.6.14&amp;#xA0;&lt;br&gt;&lt;br&gt;awx_secret_key=awxsecret&amp;#xA0;&lt;br&gt;&lt;br&gt;postgres_data_dir=/var/lib/pgdocker&lt;br&gt;host_port=80&amp;#xA0;&lt;br&gt;&lt;br&gt;docker_compose_dir=/var/lib/awx&amp;#xA0;&lt;br&gt;&lt;br&gt;pg_username=awx&lt;br&gt;pg_password=awxpass&lt;br&gt;pg_database=awx&lt;br&gt;pg_port=5432&amp;#xA0;&lt;br&gt;&lt;br&gt;awx_official=true&amp;#xA0;&lt;br&gt;&lt;br&gt;awx_alternate_dns_servers=&amp;quot;4.2.2.1,4.2.2.2&amp;quot;&lt;br&gt;&lt;br&gt;project_data_dir=/var/lib/awx/projects&lt;/pre&gt;
&lt;p&gt;10. Desplegar AWX via docker, esto tomar&amp;#xE9; varios minutos, paciencia!&amp;#xA0;&lt;/p&gt;
&lt;pre&gt;ansible-playbook -i inventory install.yml -vv&lt;/pre&gt;
&lt;p&gt;11. Una vez que termine el paso anterior, verificar si existen los dockers&lt;/p&gt;
&lt;pre&gt;docker container ls&lt;/pre&gt;
&lt;p&gt;12. Desactivar el firewall o habilitar los puertos que necesiten los dockers&lt;/p&gt;
&lt;pre&gt;systemctl stop firewalld&lt;/pre&gt;
&lt;p&gt;13.&amp;#xA0; Ingresar a la URL http://localhost:80 con las credenciales admin/password&lt;/p&gt;
&lt;figure class=&quot;image&quot;&gt;&lt;img src=&quot;https://fausto.app/uploads/2019/03/tower2.PNG&quot; srcset=&quot;/uploads/2019/03/tower2.PNG?width=200&amp;amp;key=4968d5192b1889b8f34c8ea2d737be67a0930bd49b2a0e18435d6a411479ce37 200w, /uploads/2019/03/tower2.PNG?width=400&amp;amp;key=cff17c92b0ac0ac3a8d4fc1e0b42bd823c9ed930fb0ff4ca020b6522cb01753b 400w&quot; alt=&quot;AWX Login&quot;&gt;&lt;/figure&gt;
&lt;p&gt;14. Aparecer&amp;#xE1; el panel de mando&lt;/p&gt;
&lt;figure class=&quot;image&quot;&gt;&lt;img src=&quot;https://fausto.app/uploads/2019/03/tower3.PNG&quot; srcset=&quot;/uploads/2019/03/tower3.PNG?width=200&amp;amp;key=ead018e0c2b8a4bf564a0256cd67033dbb4f0d1671d3e4095fbb04a5285cba8d 200w, /uploads/2019/03/tower3.PNG?width=400&amp;amp;key=5d2a46bfb43b7ab40899a30b7d619aa84eb1a081428e40ae1f09ff0ea95a60f4 400w, /uploads/2019/03/tower3.PNG?width=600&amp;amp;key=68ebfd66315ca579fb7715b7ec9bc4ff0a512fa599bb9a644aeb2ac9da66f855 600w, /uploads/2019/03/tower3.PNG?width=800&amp;amp;key=dae8acf631c43126cdb77bc82682b0aaabb6e940b25eb560268931b00e1b8ce3 800w, /uploads/2019/03/tower3.PNG?width=1000&amp;amp;key=31942e796920466cf4b7cbd4641b2dd4582bb5cf76eddaef13696a9ddc515fce 1000w, /uploads/2019/03/tower3.PNG?width=1200&amp;amp;key=fb2193cb98f0c096a832347133272dcb8d1d1f9a9aaf90b86f644b6b0b5a40c8 1200w&quot; alt=&quot;panel de mando AWX&quot;&gt;&lt;/figure&gt;
&lt;p&gt;Eso ser&amp;#xED;a todo con la instalaci&amp;#xF3;n.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Troubleshooting:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;1. Carga de datos de prueba&lt;/p&gt;
&lt;p&gt;En caso que se te presente esta imagen:&lt;/p&gt;
&lt;figure class=&quot;image&quot;&gt;&lt;img src=&quot;https://fausto.app/uploads/2019/03/tower1.PNG&quot; srcset=&quot;/uploads/2019/03/tower1.PNG?width=200&amp;amp;key=a95a3379c4d0d9d0e86183bf728e7ce26b35af202374351bee15da1a4e427e6a 200w&quot; alt=&quot;Error de AWX&quot;&gt;&lt;/figure&gt;
&lt;p&gt;Es porque est&amp;#xE1; cargando la data de prueba, que demora unos 10 minutos aproximadamente. Para evitar esto s&amp;#xF3;lo se necesita cambiar este par&amp;#xE1;metro en el archivo &amp;quot;inventory&amp;quot;&lt;/p&gt;
&lt;pre&gt;create_preload_data=True&lt;/pre&gt;
&lt;p&gt;2. Verificar dockers&lt;/p&gt;
&lt;pre&gt;docker container ls&lt;/pre&gt;
&lt;p&gt;3. Verificar logs del docker&lt;/p&gt;
&lt;pre&gt;docker logs $NAME_ID&lt;/pre&gt;
&lt;p&gt;4. Ingresar el bash del docker&lt;/p&gt;
&lt;pre&gt;docker exec -it $NAME_ID /bin/bash&lt;/pre&gt;
&lt;p&gt;&amp;#xA0;&lt;/p&gt;
&lt;p&gt;Hasta pronto!&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Uso de llaves SSH con Apache2</title>
        <link>https://fausto.app/notes/uso-de-llaves-ssh-con-apache2</link>
        <guid>https://fausto.app/notes/uso-de-llaves-ssh-con-apache2</guid>
        <pubDate>vie., 08 mar. 2019 09:30:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola a todos!&lt;/p&gt;
&lt;p&gt;Un problema en despliegues de aplicaciones en Apache2 es que nuestra app podr&amp;#xED;a tener c&amp;#xF3;digo que realice conexiones SSH. Por ejemplo ya tendr&amp;#xED;amos llaves para el usuario &lt;strong&gt;root&lt;/strong&gt;, pero recordar que el servidor web utiliza el usuario &lt;strong&gt;apache&lt;/strong&gt;. Por ende esas llaves deben ser replicadas en su&lt;strong&gt; home path&lt;/strong&gt;. Para esto s&amp;#xF3;lo es necesario utilizar los siguientes comandos:&lt;/p&gt;
&lt;pre&gt;cp -rf /root/.ssh/ /usr/share/httpd/.ssh&lt;br&gt;cp -rf /root/.ssh/ /usr/share/httpd/&lt;/pre&gt;
&lt;p&gt;PD: no est&amp;#xE1; mal escrito, intentar ambos. Verificado para Centos 7!&lt;/p&gt;
&lt;p&gt;Eso es todo!&lt;/p&gt;
&lt;p&gt;&amp;#xA0;&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Ansible para conexión a windows con Python</title>
        <link>https://fausto.app/notes/ansible-para-conexion-a-windows-con-python</link>
        <guid>https://fausto.app/notes/ansible-para-conexion-a-windows-con-python</guid>
        <pubDate>jue., 07 mar. 2019 09:12:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola a todos!&lt;/p&gt;
&lt;p&gt;Si se necesita manejar Ansible de forma din&amp;#xE1;mica y para ejecutar comandos en entornos windows que no tengan winRM, entonces usa SMB. O el bien conocido PSEXEC.&amp;#xA0;&lt;/p&gt;
&lt;p&gt;PSEXEC tambi&amp;#xE9;n llega como m&amp;#xF3;dulo en Ansible. Por ende es necesario instalar los requerimientos para este m&amp;#xF3;dulo. Para esto recomiendo seguir la documentaci&amp;#xF3;n oficial:&lt;/p&gt;
&lt;div data-embed=&quot;true&quot;&gt;&lt;aside class=&quot;embed-card&quot;&gt;&lt;article&gt;&lt;img src=&quot;https://pypi.org/static/images/twitter.c0030826.jpg&quot;&gt;&lt;h3&gt;&lt;a href=&quot;https://pypi.org/project/pypsexec/&quot;&gt;pypsexec&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Run commands on a remote Windows host using SMB/RPC&lt;/p&gt;&lt;/article&gt;&lt;footer&gt;&lt;img src=&quot;https://pypi.org/static/images/favicon.6a76275d.ico&quot;&gt;&lt;a href=&quot;https://pypi.org/project/pypsexec/&quot;&gt;PyPI&lt;/a&gt;&lt;/footer&gt;&lt;/aside&gt;&lt;/div&gt;
&lt;p&gt;Una vez instalado los requerimientos se puede pasar a ver y analizar el siguiente Script:&lt;/p&gt;
&lt;div data-embed=&quot;true&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;https://github.githubassets.com/assets/gist-embed-b3b573358bfc66d89e1e95dbf8319c09.css&quot;&gt;
&lt;div id=&quot;gist95028300&quot; class=&quot;gist&quot;&gt;  &lt;div class=&quot;gist-file&quot;&gt;    &lt;div class=&quot;gist-data&quot;&gt;      &lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;&lt;div id=&quot;file-ansible_windows_psexec-py&quot; class=&quot;file&quot;&gt;  &lt;div itemprop=&quot;text&quot; class=&quot;blob-wrapper data type-python &quot;&gt;    &lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot;&gt;    &lt;tbody&gt;&lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L1&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC1&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt; shutil&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L2&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC2&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt; json&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L3&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC3&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt; yaml&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L4&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC4&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;from&lt;/span&gt; collections &lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt; namedtuple&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L5&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC5&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;from&lt;/span&gt; ansible.parsing.dataloader &lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt; DataLoader&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L6&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;6&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC6&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;from&lt;/span&gt; ansible.vars.manager &lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt; VariableManager&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L7&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;7&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC7&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;from&lt;/span&gt; ansible.inventory.manager &lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt; InventoryManager&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L8&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;8&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC8&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;from&lt;/span&gt; ansible.playbook.play &lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt; Play&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L9&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;9&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC9&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;from&lt;/span&gt; ansible.executor.task_queue_manager &lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt; TaskQueueManager&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L10&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;10&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC10&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;from&lt;/span&gt; ansible.plugins.callback &lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt; CallbackBase&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L11&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;11&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC11&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L12&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;12&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC12&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;import&lt;/span&gt; ansible.constants &lt;span class=&quot;pl-k&quot;&gt;as&lt;/span&gt; C&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L13&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;13&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC13&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L14&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;14&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC14&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt;CLASS TO COLLECT RESULT&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L15&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;15&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC15&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;ResultCallback&lt;/span&gt;(&lt;span class=&quot;pl-e&quot;&gt;CallbackBase&lt;/span&gt;):&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L16&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;16&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC16&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt; &lt;span class=&quot;pl-k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;v2_runner_on_ok&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;&lt;span class=&quot;pl-smi&quot;&gt;self&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-smi&quot;&gt;result&lt;/span&gt;, &lt;span class=&quot;pl-k&quot;&gt;**&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;kwargs&lt;/span&gt;):&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L17&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;17&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC17&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;       host &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; result._host&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L18&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;18&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC18&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;               &lt;span class=&quot;pl-c1&quot;&gt;print&lt;/span&gt;(result._result)&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L19&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;19&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC19&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;           &lt;span class=&quot;pl-c1&quot;&gt;print&lt;/span&gt;(json.dumps({host.name: result._result}, &lt;span class=&quot;pl-v&quot;&gt;indent&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;4&lt;/span&gt;))&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L20&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;20&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC20&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt; &lt;span class=&quot;pl-k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;v2_runner_on_unreachable&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;&lt;span class=&quot;pl-smi&quot;&gt;self&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-smi&quot;&gt;result&lt;/span&gt;):&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L21&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;21&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC21&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;               host &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; result._host&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L22&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;22&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC22&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;             &lt;span class=&quot;pl-c1&quot;&gt;print&lt;/span&gt;(json.dumps({host.name: result._result}, &lt;span class=&quot;pl-v&quot;&gt;indent&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;4&lt;/span&gt;))&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L23&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;23&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC23&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;  &lt;span class=&quot;pl-k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;v2_runner_on_failed&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;&lt;span class=&quot;pl-smi&quot;&gt;self&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-smi&quot;&gt;result&lt;/span&gt;,  &lt;span class=&quot;pl-k&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;args&lt;/span&gt;, &lt;span class=&quot;pl-k&quot;&gt;**&lt;/span&gt;&lt;span class=&quot;pl-smi&quot;&gt;kwargs&lt;/span&gt;):&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L24&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;24&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC24&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;              host &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; result._host&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L25&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;25&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC25&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;              &lt;span class=&quot;pl-c1&quot;&gt;print&lt;/span&gt;(json.dumps({host.name: result._result}, &lt;span class=&quot;pl-v&quot;&gt;indent&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;4&lt;/span&gt;))&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L26&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;26&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC26&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L27&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;27&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC27&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt;CREDENTIALS&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L28&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;28&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC28&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;remote_host&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;1.1.1.1&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L29&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;29&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC29&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;remote_user&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;DOMINIO&lt;span class=&quot;pl-cce&quot;&gt;&lt;/span&gt;usuario&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L30&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;30&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC30&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;remote_password&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Contrase&amp;#xC3;&amp;#xB1;a$&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L31&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;31&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC31&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L32&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;32&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC32&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;Options &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; namedtuple(&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;Options&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;, [&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;connection&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;module_path&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;forks&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;become&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;remote_user&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;password&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;,&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;become_method&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;become_user&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;check&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;diff&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;,&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;verbosity&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;,])&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L33&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;33&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC33&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;options &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; Options(&lt;span class=&quot;pl-v&quot;&gt;connection&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;ssh&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-v&quot;&gt;module_path&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;None&lt;/span&gt;, &lt;span class=&quot;pl-v&quot;&gt;forks&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;10&lt;/span&gt;, &lt;span class=&quot;pl-v&quot;&gt;become&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;False&lt;/span&gt;, &lt;span class=&quot;pl-v&quot;&gt;remote_user&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;remote_user, &lt;span class=&quot;pl-v&quot;&gt;password&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;remote_password,&lt;span class=&quot;pl-v&quot;&gt;become_method&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;None&lt;/span&gt;, &lt;span class=&quot;pl-v&quot;&gt;become_user&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;True&lt;/span&gt;, &lt;span class=&quot;pl-v&quot;&gt;check&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;False&lt;/span&gt;, &lt;span class=&quot;pl-v&quot;&gt;diff&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;False&lt;/span&gt;, &lt;span class=&quot;pl-v&quot;&gt;verbosity&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;True&lt;/span&gt;,)&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L34&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;34&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC34&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L35&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;35&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC35&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; initialize needed objects&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L36&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;36&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC36&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;loader &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; DataLoader() &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; Takes care of finding and reading yaml, json and ini files&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L37&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;37&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC37&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;passwords &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; {}&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L38&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;38&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC38&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L39&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;39&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC39&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; Instantiate our ResultCallback for handling results as they come in. Ansible expects this to be one of its main display outlets&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L40&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;40&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC40&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;results_callback &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; ResultCallback()&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L41&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;41&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC41&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L42&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;42&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC42&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; create inventory, use path to host config file as source or hosts in a comma separated string&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L43&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;43&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC43&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;inventory &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; InventoryManager(&lt;span class=&quot;pl-v&quot;&gt;loader&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;loader, &lt;span class=&quot;pl-v&quot;&gt;sources&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;remote_host&lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;,&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;)&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L44&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;44&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC44&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L45&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;45&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC45&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; variable manager takes care of merging all the different sources to give you a unifed view of variables available in each context&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L46&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;46&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC46&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;variable_manager &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; VariableManager(&lt;span class=&quot;pl-v&quot;&gt;loader&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;loader, &lt;span class=&quot;pl-v&quot;&gt;inventory&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;inventory)&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L47&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;47&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC47&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L48&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;48&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC48&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;variable_manager.extra_vars &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; {&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;ansible_user&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;: &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;root&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;ansible_password&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;: &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;CONTRASE&amp;#xC3;A DE NODO MAESTRO&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;}&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L49&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;49&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC49&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L50&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;50&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC50&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;yamlConfigFile &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L51&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;51&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC51&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-s&quot;&gt;name: remote psexec&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L52&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;52&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC52&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-s&quot;&gt;hosts: localhost&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L53&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;53&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC53&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-s&quot;&gt;tasks:&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L54&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;54&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC54&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-s&quot;&gt;    - name: Run a cmd.exe command&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L55&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;55&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC55&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-s&quot;&gt;      psexec:&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L56&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;56&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC56&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-s&quot;&gt;        hostname: IP REMOTA&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L57&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;57&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC57&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-s&quot;&gt;        connection_username: DOMINIO&lt;span class=&quot;pl-cce&quot;&gt;&lt;/span&gt;USUARIO&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L58&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;58&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC58&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-s&quot;&gt;        connection_password: CONTRASE&amp;#xC3;A&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L59&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;59&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC59&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-s&quot;&gt;        executable: cmd.exe&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L60&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;60&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC60&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-s&quot;&gt;        arguments: /c COMANDOS DE WINDOWS&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L61&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;61&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC61&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L62&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;62&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC62&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L63&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;63&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC63&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;theDict &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; yaml.load(yamlConfigFile)&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L64&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;64&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC64&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L65&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;65&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC65&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;play_source &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; theDict&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L66&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;66&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC66&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L67&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;67&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC67&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;play &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; Play().load(play_source, &lt;span class=&quot;pl-v&quot;&gt;variable_manager&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;variable_manager, &lt;span class=&quot;pl-v&quot;&gt;loader&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;loader)&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L68&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;68&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC68&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L69&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;69&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC69&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;tqm &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;None&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L70&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;70&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC70&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt;EXECUTER&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L71&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;71&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC71&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;try&lt;/span&gt;:&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L72&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;72&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC72&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt; tqm &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; TaskQueueManager(&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L73&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;73&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC73&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            &lt;span class=&quot;pl-v&quot;&gt;inventory&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;inventory,&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L74&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;74&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC74&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;           &lt;span class=&quot;pl-v&quot;&gt;variable_manager&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;variable_manager,&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L75&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;75&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC75&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;             &lt;span class=&quot;pl-v&quot;&gt;loader&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;loader,&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L76&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;76&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC76&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                 &lt;span class=&quot;pl-v&quot;&gt;options&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;options,&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L77&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;77&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC77&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;               &lt;span class=&quot;pl-v&quot;&gt;passwords&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;passwords,&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L78&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;78&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC78&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;           &lt;span class=&quot;pl-v&quot;&gt;stdout_callback&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;results_callback,  &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; Use our custom callback instead of the ``default`` callback plugin, which prints to stdout #COLLECTOR&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L79&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;79&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC79&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;             )&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L80&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;80&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC80&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    result &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; tqm.run(play) &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; most interesting data for a play is actually sent to the callback&amp;apos;s methods&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L81&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;81&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC81&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;finally&lt;/span&gt;:&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L82&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;82&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC82&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;      &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; we always need to cleanup child procs and the structres we use to communicate with them&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L83&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;83&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC83&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;      &lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; tqm &lt;span class=&quot;pl-k&quot;&gt;is&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;not&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;None&lt;/span&gt;:&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L84&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;84&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC84&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;               tqm.cleanup()&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L85&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;85&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC85&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;      &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; Remove ansible tmpdir&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-L86&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;86&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-ansible_windows_psexec-py-LC86&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        shutil.rmtree(C.&lt;span class=&quot;pl-c1&quot;&gt;DEFAULT_LOCAL_TMP&lt;/span&gt;, &lt;span class=&quot;pl-c1&quot;&gt;True&lt;/span&gt;)&lt;/td&gt;    &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;    &lt;/div&gt;    &lt;div class=&quot;gist-meta&quot;&gt;      &lt;a href=&quot;https://gist.github.com/richard24se/e6768586e8d129e8323cff1ce64a5fcd/raw/4633bd7d46d17407e5e95d6031dc7207f68411a4/ansible_windows_psexec.py&quot; style=&quot;float:right&quot;&gt;view raw&lt;/a&gt;      &lt;a href=&quot;https://gist.github.com/richard24se/e6768586e8d129e8323cff1ce64a5fcd#file-ansible_windows_psexec-py&quot;&gt;ansible_windows_psexec.py&lt;/a&gt;      hosted with &amp;#x2764; by &lt;a href=&quot;https://github.com&quot;&gt;GitHub&lt;/a&gt;    &lt;/div&gt;  &lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Eso es todo!&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Limpieza de firmas del SCCM con Powershell</title>
        <link>https://fausto.app/notes/limpieza-de-firmas-del-sccm-con-powershell</link>
        <guid>https://fausto.app/notes/limpieza-de-firmas-del-sccm-con-powershell</guid>
        <pubDate>jue., 14 feb. 2019 16:13:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola a todos!&lt;/p&gt;
&lt;p&gt;Adjunto un script para limpiar las firmas de antimalware antiguas del SCCM.&amp;#xA0;&lt;/p&gt;
&lt;div data-embed=&quot;true&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;https://github.githubassets.com/assets/gist-embed-b3b573358bfc66d89e1e95dbf8319c09.css&quot;&gt;
&lt;div id=&quot;gist94656274&quot; class=&quot;gist&quot;&gt;  &lt;div class=&quot;gist-file&quot;&gt;    &lt;div class=&quot;gist-data&quot;&gt;      &lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;&lt;div id=&quot;file-clean-cmsoftwareupdategroups-ps1&quot; class=&quot;file&quot;&gt;  &lt;div itemprop=&quot;text&quot; class=&quot;blob-wrapper data type-powershell &quot;&gt;    &lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot;&gt;    &lt;tbody&gt;&lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L1&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC1&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&amp;lt;#&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L2&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC2&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;SYNOPSIS&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L3&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC3&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;    Perform a clean up of expired and/or supersded Software Updates in all Software Update Groups&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L4&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC4&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;DESCRIPTION&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L5&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC5&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;    Use this script if you need to perform a clean up of expired and/or superseded Software Updates from all Software Upgrade Groups in ConfigMgr&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L6&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;6&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC6&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;PARAMETER&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;SiteServer&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L7&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;7&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC7&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;    Site server name with SMS Provider installed&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L8&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;8&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC8&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;PARAMETER&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;Option&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L9&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;9&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC9&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;    Select an option to clean either ExpiredOnly, SupersededOnly or ExpiredSuperseded Software Updates from each Software Update Group&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L10&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;10&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC10&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;PARAMETER&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;RemoveContent&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L11&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;11&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC11&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;    Remove the content for those Software Updates that will be removed from a Software Upgrade Group&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L12&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;12&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC12&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;PARAMETER&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;ShowProgress&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L13&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;13&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC13&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;    Show a progressbar displaying the current operation&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L14&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;14&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC14&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;EXAMPLE&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L15&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;15&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC15&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;    Clean Software Update Groups from expired Software Updates, while showing the current progress and removing downloaded content, on a Primary Site server called &amp;apos;CM01&amp;apos;:&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L16&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;16&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC16&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;    .Clean-CMSoftwareUpdateGroups.ps1 -SiteServer CM01 -Option ExpiredOnly -RemoveContent -ShowProgress&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L17&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;17&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC17&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L18&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;18&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC18&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;    Clean Software Update Groups from superseded Software Updates, while showing the current progress, on a Primary Site server called &amp;apos;CM01&amp;apos;:&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L19&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;19&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC19&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;    .Clean-CMSoftwareUpdateGroups.ps1 -SiteServer CM01 -Option SupersededOnly -ShowProgress&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L20&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;20&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC20&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L21&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;21&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC21&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;    Clean Software Update Groups from expired and supersded Software Updates with verbose output, on a Primary Site server called &amp;apos;CM01&amp;apos;:&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L22&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;22&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC22&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;    .Clean-CMSoftwareUpdateGroups.ps1 -SiteServer CM01 -Option ExpiredSuperseded -Verbose&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L23&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;23&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC23&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;    &lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L24&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;24&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC24&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;NOTES&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L25&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;25&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC25&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;    Name:        Clean-CMSoftwareUpdateGroups.ps1&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L26&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;26&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC26&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;    Author:      Nickolaj Andersen&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L27&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;27&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC27&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;    Contact:     @NickolajA&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L28&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;28&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC28&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;    Created:     2015-12-17&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L29&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;29&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC29&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;    Version:     2.1&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L30&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;30&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC30&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L31&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;31&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC31&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;[&lt;span class=&quot;pl-c1&quot;&gt;CmdletBinding&lt;/span&gt;(&lt;span class=&quot;pl-v&quot;&gt;SupportsShouldProcess&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;$true&lt;/span&gt;)]&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L32&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;32&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC32&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;param&lt;/span&gt;(&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L33&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;33&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC33&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    [&lt;span class=&quot;pl-c1&quot;&gt;parameter&lt;/span&gt;(&lt;span class=&quot;pl-v&quot;&gt;Mandatory&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;$true&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-v&quot;&gt;HelpMessage&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Site server where the SMS Provider is installed&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;)]&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L34&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;34&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC34&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    [&lt;span class=&quot;pl-c1&quot;&gt;ValidateScript&lt;/span&gt;({&lt;span class=&quot;pl-c1&quot;&gt;Test-Connection&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;ComputerName &lt;span class=&quot;pl-c1&quot;&gt;$_&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Count &lt;span class=&quot;pl-c1&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Quiet})]&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L35&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;35&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC35&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    [&lt;span class=&quot;pl-c1&quot;&gt;ValidateNotNullOrEmpty&lt;/span&gt;()]&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L36&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;36&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC36&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    [&lt;span class=&quot;pl-k&quot;&gt;string&lt;/span&gt;]&lt;span class=&quot;pl-smi&quot;&gt;$SiteServer&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;,&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L37&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;37&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC37&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L38&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;38&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC38&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    [&lt;span class=&quot;pl-c1&quot;&gt;parameter&lt;/span&gt;(&lt;span class=&quot;pl-v&quot;&gt;Mandatory&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;$true&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-v&quot;&gt;HelpMessage&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Select an option to clean either ExpiredOnly, SupersededOnly or ExpiredSuperseded Software Updates from each Software Update Group&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;)]&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L39&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;39&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC39&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    [&lt;span class=&quot;pl-c1&quot;&gt;ValidateNotNullOrEmpty&lt;/span&gt;()]&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L40&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;40&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC40&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    [&lt;span class=&quot;pl-c1&quot;&gt;ValidateSet&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;ExpiredOnly&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;SupersededOnly&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;ExpiredSuperseded&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;)]&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L41&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;41&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC41&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    [&lt;span class=&quot;pl-k&quot;&gt;string&lt;/span&gt;]&lt;span class=&quot;pl-smi&quot;&gt;$Option&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;,&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L42&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;42&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC42&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L43&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;43&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC43&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    [&lt;span class=&quot;pl-c1&quot;&gt;parameter&lt;/span&gt;(&lt;span class=&quot;pl-v&quot;&gt;Mandatory&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;$false&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-v&quot;&gt;HelpMessage&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Remove the content for those Software Updates that will be removed from a Software Upgrade Group&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;)]&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L44&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;44&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC44&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    [&lt;span class=&quot;pl-c1&quot;&gt;ValidateNotNullOrEmpty&lt;/span&gt;()]&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L45&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;45&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC45&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    [&lt;span class=&quot;pl-k&quot;&gt;switch&lt;/span&gt;]&lt;span class=&quot;pl-smi&quot;&gt;$RemoveContent&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;,&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L46&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;46&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC46&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L47&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;47&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC47&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    [&lt;span class=&quot;pl-c1&quot;&gt;parameter&lt;/span&gt;(&lt;span class=&quot;pl-v&quot;&gt;Mandatory&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;$false&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-v&quot;&gt;HelpMessage&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Show a progressbar displaying the current operation&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;)]&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L48&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;48&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC48&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    [&lt;span class=&quot;pl-c1&quot;&gt;ValidateNotNullOrEmpty&lt;/span&gt;()]&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L49&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;49&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC49&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    [&lt;span class=&quot;pl-k&quot;&gt;switch&lt;/span&gt;]&lt;span class=&quot;pl-smi&quot;&gt;$ShowProgress&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L50&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;50&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC50&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;)&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L51&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;51&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC51&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;Begin&lt;/span&gt; {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L52&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;52&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC52&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; Determine SiteCode from WMI&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L53&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;53&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC53&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;try&lt;/span&gt; {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L54&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;54&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC54&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-c1&quot;&gt;Write-Verbose&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Determining Site Code for Site server: &amp;apos;$(&lt;span class=&quot;pl-smi&quot;&gt;$SiteServer&lt;/span&gt;)&amp;apos;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L55&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;55&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC55&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-smi&quot;&gt;$SiteCodeObjects&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;Get-WmiObject&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Namespace &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;rootSMS&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Class SMS_ProviderLocation &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;ComputerName &lt;span class=&quot;pl-smi&quot;&gt;$SiteServer&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;ErrorAction Stop&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L56&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;56&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC56&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-k&quot;&gt;foreach&lt;/span&gt; (&lt;span class=&quot;pl-smi&quot;&gt;$SiteCodeObject&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;$SiteCodeObjects&lt;/span&gt;) {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L57&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;57&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC57&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            &lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; (&lt;span class=&quot;pl-smi&quot;&gt;$SiteCodeObject&lt;span class=&quot;pl-smi&quot;&gt;.ProviderForLocalSite&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-eq&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;$true&lt;/span&gt;) {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L58&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;58&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC58&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                &lt;span class=&quot;pl-smi&quot;&gt;$SiteCode&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;$SiteCodeObject&lt;span class=&quot;pl-smi&quot;&gt;.SiteCode&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L59&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;59&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC59&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                &lt;span class=&quot;pl-c1&quot;&gt;Write-Verbose&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Message &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Site Code: $(&lt;span class=&quot;pl-smi&quot;&gt;$SiteCode&lt;/span&gt;)&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L60&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;60&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC60&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L61&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;61&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC61&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L62&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;62&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC62&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L63&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;63&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC63&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;catch&lt;/span&gt; [&lt;span class=&quot;pl-k&quot;&gt;System.UnauthorizedAccessException&lt;/span&gt;] {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L64&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;64&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC64&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-c1&quot;&gt;Write-Warning&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Message &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Access denied&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; ; &lt;span class=&quot;pl-k&quot;&gt;break&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L65&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;65&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC65&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L66&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;66&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC66&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;catch&lt;/span&gt; [&lt;span class=&quot;pl-k&quot;&gt;System.Exception&lt;/span&gt;] {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L67&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;67&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC67&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-c1&quot;&gt;Write-Warning&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Message &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Unable to determine Site Code&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; ; &lt;span class=&quot;pl-k&quot;&gt;break&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L68&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;68&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC68&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L69&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;69&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC69&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; Temporarily set ErrorActionPreference&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L70&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;70&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC70&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-c1&quot;&gt;$ErrorActionPreference&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Stop&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L71&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;71&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC71&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; Set ProgressCount&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L72&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;72&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC72&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; (&lt;span class=&quot;pl-c1&quot;&gt;$PSBoundParameters&lt;/span&gt;[&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;ShowProgress&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;]) {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L73&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;73&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC73&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-smi&quot;&gt;$ProgressCount&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;0&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L74&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;74&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC74&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L75&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;75&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC75&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;}&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L76&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;76&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC76&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;Process&lt;/span&gt; {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L77&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;77&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC77&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;try&lt;/span&gt; {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L78&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;78&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC78&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-smi&quot;&gt;$StartTime&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; [&lt;span class=&quot;pl-k&quot;&gt;Diagnostics.Stopwatch&lt;/span&gt;]::StartNew()&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L79&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;79&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC79&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-smi&quot;&gt;$SUGResults&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; (&lt;span class=&quot;pl-c1&quot;&gt;Get-WmiObject&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Namespace &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;rootSMSsite_$(&lt;span class=&quot;pl-smi&quot;&gt;$SiteCode&lt;/span&gt;)&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Class SMS_AuthorizationList &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;ComputerName &lt;span class=&quot;pl-smi&quot;&gt;$SiteServer&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;ErrorAction SilentlyContinue &lt;span class=&quot;pl-k&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;Measure-Object&lt;/span&gt;).Count&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L80&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;80&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC80&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-smi&quot;&gt;$SUGResults&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L81&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;81&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC81&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; (&lt;span class=&quot;pl-smi&quot;&gt;$SUGResults&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-ge&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;1&lt;/span&gt;) {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L82&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;82&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC82&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; Get list of removable Software Updates&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L83&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;83&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC83&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            &lt;span class=&quot;pl-k&quot;&gt;switch&lt;/span&gt; (&lt;span class=&quot;pl-smi&quot;&gt;$Option&lt;/span&gt;) {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L84&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;84&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC84&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;ExpiredOnly&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L85&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;85&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC85&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                    &lt;span class=&quot;pl-smi&quot;&gt;$Query&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;SELECT SU.CI_ID FROM SMS_SoftwareUpdate AS SU JOIN SMS_CIRelation AS CIR ON SU.CI_ID = CIR.ToCIID WHERE CIR.RelationType = 1 AND SU.IsExpired = 1 AND SU.IsSuperseded = 0&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L86&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;86&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC86&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L87&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;87&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC87&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;SupersededOnly&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L88&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;88&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC88&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                    &lt;span class=&quot;pl-smi&quot;&gt;$Query&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;SELECT SU.CI_ID FROM SMS_SoftwareUpdate AS SU JOIN SMS_CIRelation AS CIR ON SU.CI_ID = CIR.ToCIID WHERE CIR.RelationType = 1 AND SU.IsExpired = 0 AND SU.IsSuperseded = 1&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L89&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;89&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC89&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L90&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;90&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC90&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;ExpiredSuperseded&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L91&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;91&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC91&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                    &lt;span class=&quot;pl-smi&quot;&gt;$Query&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;SELECT SU.CI_ID FROM SMS_SoftwareUpdate AS SU JOIN SMS_CIRelation AS CIR ON SU.CI_ID = CIR.ToCIID WHERE CIR.RelationType = 1 AND (SU.IsExpired = 1 OR SU.IsSuperseded = 1)&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L92&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;92&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC92&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L93&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;93&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC93&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L94&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;94&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC94&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            &lt;span class=&quot;pl-k&quot;&gt;try&lt;/span&gt; {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L95&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;95&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC95&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                &lt;span class=&quot;pl-smi&quot;&gt;$RemovableUpdates&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;Get-WmiObject&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Namespace &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;rootSMSsite_$(&lt;span class=&quot;pl-smi&quot;&gt;$SiteCode&lt;/span&gt;)&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Query &lt;span class=&quot;pl-smi&quot;&gt;$Query&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;ComputerName &lt;span class=&quot;pl-smi&quot;&gt;$SiteServer&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;ErrorAction Stop&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L96&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;96&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC96&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                &lt;span class=&quot;pl-smi&quot;&gt;$RemovableUpdatesList&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;New-Object&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;TypeName System.Collections.ArrayList&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L97&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;97&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC97&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                &lt;span class=&quot;pl-k&quot;&gt;foreach&lt;/span&gt; (&lt;span class=&quot;pl-smi&quot;&gt;$RemovableUpdate&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;$RemovableUpdates&lt;/span&gt;) {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L98&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;98&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC98&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                    &lt;span class=&quot;pl-smi&quot;&gt;$RemovableUpdatesList&lt;span class=&quot;pl-smi&quot;&gt;.Add&lt;/span&gt;&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;$RemovableUpdate&lt;span class=&quot;pl-smi&quot;&gt;.CI_ID&lt;/span&gt;&lt;/span&gt;) &lt;span class=&quot;pl-k&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;Out-Null&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L99&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;99&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC99&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L100&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;100&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC100&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L101&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;101&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC101&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            &lt;span class=&quot;pl-k&quot;&gt;catch&lt;/span&gt; [&lt;span class=&quot;pl-k&quot;&gt;System.Exception&lt;/span&gt;] {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L102&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;102&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC102&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                &lt;span class=&quot;pl-c1&quot;&gt;Write-Warning&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Message &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Unable to determine removable Software Updates from selected option&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L103&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;103&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC103&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L104&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;104&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC104&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; Enumerate each Software Update Group&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L105&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;105&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC105&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            &lt;span class=&quot;pl-smi&quot;&gt;$AuthorizationLists&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;Get-WmiObject&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Namespace &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;rootSMSsite_$(&lt;span class=&quot;pl-smi&quot;&gt;$SiteCode&lt;/span&gt;)&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Class SMS_AuthorizationList &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;ComputerName &lt;span class=&quot;pl-smi&quot;&gt;$SiteServer&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;ErrorAction Stop&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L106&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;106&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC106&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            &lt;span class=&quot;pl-k&quot;&gt;foreach&lt;/span&gt; (&lt;span class=&quot;pl-smi&quot;&gt;$AuthorizationList&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;$AuthorizationLists&lt;/span&gt;) {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L107&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;107&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC107&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                &lt;span class=&quot;pl-c1&quot;&gt;Write-Verbose&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Message &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Start processing &amp;apos;$(&lt;span class=&quot;pl-smi&quot;&gt;$AuthorizationList&lt;span class=&quot;pl-smi&quot;&gt;.LocalizedDisplayName&lt;/span&gt;&lt;/span&gt;)&amp;apos;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L108&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;108&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC108&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                &lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; (&lt;span class=&quot;pl-c1&quot;&gt;$PSBoundParameters&lt;/span&gt;[&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;ShowProgress&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;]) {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L109&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;109&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC109&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                    &lt;span class=&quot;pl-smi&quot;&gt;$ProgressCount&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;++&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L110&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;110&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC110&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L111&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;111&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC111&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                &lt;span class=&quot;pl-c1&quot;&gt;Write-Progress&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Activity &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Processing Software Updates Groups&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Id &lt;span class=&quot;pl-c1&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Status &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;$(&lt;span class=&quot;pl-smi&quot;&gt;$ProgressCount&lt;/span&gt;) / $(&lt;span class=&quot;pl-smi&quot;&gt;$SUGResults&lt;/span&gt;)&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;CurrentOperation &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Current Software Update Group: &amp;apos;$(&lt;span class=&quot;pl-smi&quot;&gt;$AuthorizationList&lt;span class=&quot;pl-smi&quot;&gt;.LocalizedDisplayName&lt;/span&gt;&lt;/span&gt;)&amp;apos;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;PercentComplete ((&lt;span class=&quot;pl-smi&quot;&gt;$ProgressCount&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;$SUGResults&lt;/span&gt;) &lt;span class=&quot;pl-k&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;100&lt;/span&gt;)&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L112&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;112&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC112&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                &lt;span class=&quot;pl-smi&quot;&gt;$AuthorizationList&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; [&lt;span class=&quot;pl-k&quot;&gt;wmi&lt;/span&gt;]&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;$(&lt;span class=&quot;pl-smi&quot;&gt;$AuthorizationList&lt;span class=&quot;pl-smi&quot;&gt;.__PATH&lt;/span&gt;&lt;/span&gt;)&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L113&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;113&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC113&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                &lt;span class=&quot;pl-smi&quot;&gt;$UpdatesCount&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;$AuthorizationList&lt;span class=&quot;pl-smi&quot;&gt;.Updates.Count&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L114&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;114&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC114&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                &lt;span class=&quot;pl-smi&quot;&gt;$UpdatesList&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;New-Object&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;TypeName System.Collections.ArrayList&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L115&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;115&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC115&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                &lt;span class=&quot;pl-smi&quot;&gt;$RemovedUpdatesList&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;New-Object&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;TypeName System.Collections.ArrayList&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L116&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;116&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC116&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; Enumerate each Software Update in current Software Update Group if eligible for removal&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L117&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;117&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC117&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                &lt;span class=&quot;pl-k&quot;&gt;foreach&lt;/span&gt; (&lt;span class=&quot;pl-smi&quot;&gt;$Update&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;in&lt;/span&gt; (&lt;span class=&quot;pl-smi&quot;&gt;$AuthorizationList&lt;span class=&quot;pl-smi&quot;&gt;.Updates&lt;/span&gt;&lt;/span&gt;)) {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L118&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;118&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC118&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                    &lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; (&lt;span class=&quot;pl-smi&quot;&gt;$Update&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-notin&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;$RemovableUpdatesList&lt;/span&gt;) {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L119&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;119&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC119&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                        &lt;span class=&quot;pl-smi&quot;&gt;$UpdatesList&lt;span class=&quot;pl-smi&quot;&gt;.Add&lt;/span&gt;&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;$Update&lt;/span&gt;) &lt;span class=&quot;pl-k&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;Out-Null&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L120&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;120&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC120&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                    }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L121&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;121&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC121&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                    &lt;span class=&quot;pl-k&quot;&gt;else&lt;/span&gt; {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L122&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;122&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC122&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                        &lt;span class=&quot;pl-smi&quot;&gt;$RemovedUpdatesList&lt;span class=&quot;pl-smi&quot;&gt;.Add&lt;/span&gt;&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;$Update&lt;/span&gt;) &lt;span class=&quot;pl-k&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;Out-Null&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L123&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;123&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC123&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                    }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L124&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;124&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC124&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L125&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;125&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC125&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; Update Software Update Group updates if count of objects in UpdatesList is less than before&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L126&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;126&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC126&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                &lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; (&lt;span class=&quot;pl-smi&quot;&gt;$UpdatesCount&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-gt&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;$UpdatesList&lt;span class=&quot;pl-smi&quot;&gt;.Count&lt;/span&gt;&lt;/span&gt;) {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L127&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;127&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC127&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                    &lt;span class=&quot;pl-k&quot;&gt;try&lt;/span&gt; {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L128&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;128&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC128&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                        &lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; (&lt;span class=&quot;pl-c1&quot;&gt;$PSCmdlet&lt;span class=&quot;pl-smi&quot;&gt;.ShouldProcess&lt;/span&gt;&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;$(&lt;span class=&quot;pl-smi&quot;&gt;$AuthorizationList&lt;span class=&quot;pl-smi&quot;&gt;.LocalizedDisplayName&lt;/span&gt;&lt;/span&gt;)&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Clean &amp;apos;$(&lt;span class=&quot;pl-smi&quot;&gt;$UpdatesCount&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt; (&lt;span class=&quot;pl-smi&quot;&gt;$UpdatesList&lt;span class=&quot;pl-smi&quot;&gt;.Count&lt;/span&gt;&lt;/span&gt;))&amp;apos; updates&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;)) {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L129&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;129&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC129&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                            &lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; (&lt;span class=&quot;pl-smi&quot;&gt;$UpdatesList&lt;span class=&quot;pl-smi&quot;&gt;.Count&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-ge&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;1&lt;/span&gt;) {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L130&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;130&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC130&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                &lt;span class=&quot;pl-smi&quot;&gt;$AuthorizationList&lt;span class=&quot;pl-smi&quot;&gt;.Updates&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;$UpdatesList&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L131&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;131&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC131&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                &lt;span class=&quot;pl-smi&quot;&gt;$AuthorizationList&lt;span class=&quot;pl-smi&quot;&gt;.Put&lt;/span&gt;&lt;/span&gt;() &lt;span class=&quot;pl-k&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;Out-Null&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L132&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;132&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC132&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                &lt;span class=&quot;pl-c1&quot;&gt;Write-Verbose&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Message &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Successfully cleaned up $(&lt;span class=&quot;pl-smi&quot;&gt;$UpdatesCount&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt; (&lt;span class=&quot;pl-smi&quot;&gt;$UpdatesList&lt;span class=&quot;pl-smi&quot;&gt;.Count&lt;/span&gt;&lt;/span&gt;)) updates from &amp;apos;$(&lt;span class=&quot;pl-smi&quot;&gt;$AuthorizationList&lt;span class=&quot;pl-smi&quot;&gt;.LocalizedDisplayName&lt;/span&gt;&lt;/span&gt;)&amp;apos;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L133&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;133&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC133&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                            }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L134&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;134&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC134&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                            &lt;span class=&quot;pl-k&quot;&gt;else&lt;/span&gt; {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L135&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;135&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC135&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                &lt;span class=&quot;pl-smi&quot;&gt;$AuthorizationList&lt;span class=&quot;pl-smi&quot;&gt;.Updates&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;@&lt;/span&gt;()&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L136&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;136&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC136&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                &lt;span class=&quot;pl-smi&quot;&gt;$AuthorizationList&lt;span class=&quot;pl-smi&quot;&gt;.Put&lt;/span&gt;&lt;/span&gt;() &lt;span class=&quot;pl-k&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;Out-Null&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L137&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;137&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC137&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                &lt;span class=&quot;pl-c1&quot;&gt;Write-Verbose&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Message &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Successfully cleaned up all updates from &amp;apos;$(&lt;span class=&quot;pl-smi&quot;&gt;$AuthorizationList&lt;span class=&quot;pl-smi&quot;&gt;.LocalizedDisplayName&lt;/span&gt;&lt;/span&gt;)&amp;apos;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L138&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;138&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC138&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                            }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L139&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;139&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC139&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                        }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L140&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;140&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC140&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                        &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; Remove content for each CI_ID in the RemovedUpdatesList array&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L141&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;141&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC141&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                        &lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; (&lt;span class=&quot;pl-c1&quot;&gt;$PSBoundParameters&lt;/span&gt;[&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;RemoveContent&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;]) {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L142&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;142&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC142&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                            &lt;span class=&quot;pl-k&quot;&gt;try&lt;/span&gt; {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L143&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;143&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC143&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                &lt;span class=&quot;pl-smi&quot;&gt;$DeploymentPackageList&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;New-Object&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;TypeName System.Collections.ArrayList&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L144&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;144&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC144&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                &lt;span class=&quot;pl-k&quot;&gt;foreach&lt;/span&gt; (&lt;span class=&quot;pl-smi&quot;&gt;$CI_ID&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;$RemovedUpdatesList&lt;/span&gt;) {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L145&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;145&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC145&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                    &lt;span class=&quot;pl-c1&quot;&gt;Write-Verbose&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Message &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Collecting content data for CI_ID: $(&lt;span class=&quot;pl-smi&quot;&gt;$CI_ID&lt;/span&gt;)&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L146&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;146&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC146&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                    &lt;span class=&quot;pl-smi&quot;&gt;$ContentQuery&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;SELECT SMS_PackageToContent.ContentID,SMS_PackageToContent.PackageID from SMS_PackageToContent JOIN SMS_CIToContent ON SMS_CIToContent.ContentID = SMS_PackageToContent.ContentID WHERE SMS_CIToContent.CI_ID IN ($(&lt;span class=&quot;pl-smi&quot;&gt;$CI_ID&lt;/span&gt;))&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L147&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;147&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC147&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                    &lt;span class=&quot;pl-smi&quot;&gt;$ContentData&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;Get-WmiObject&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Namespace &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;rootSMSsite_$(&lt;span class=&quot;pl-smi&quot;&gt;$SiteCode&lt;/span&gt;)&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Query &lt;span class=&quot;pl-smi&quot;&gt;$ContentQuery&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;ComputerName &lt;span class=&quot;pl-smi&quot;&gt;$SiteServer&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;ErrorAction Stop&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L148&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;148&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC148&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                    &lt;span class=&quot;pl-c1&quot;&gt;Write-Verbose&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Message &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Found &amp;apos;$((&lt;span class=&quot;pl-smi&quot;&gt;$ContentData&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;Measure-Object&lt;/span&gt;).Count)&amp;apos; objects&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L149&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;149&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC149&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                    &lt;span class=&quot;pl-k&quot;&gt;foreach&lt;/span&gt; (&lt;span class=&quot;pl-smi&quot;&gt;$Content&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;$ContentData&lt;/span&gt;) {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L150&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;150&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC150&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                        &lt;span class=&quot;pl-smi&quot;&gt;$ContentID&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;$Content&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;Select-Object&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;ExpandProperty ContentID&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L151&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;151&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC151&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                        &lt;span class=&quot;pl-smi&quot;&gt;$PackageID&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;$Content&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;Select-Object&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;ExpandProperty PackageID&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L152&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;152&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC152&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                        &lt;span class=&quot;pl-smi&quot;&gt;$DeploymentPackage&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; [&lt;span class=&quot;pl-k&quot;&gt;wmi&lt;/span&gt;]&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;$(&lt;span class=&quot;pl-smi&quot;&gt;$SiteServer&lt;/span&gt;)rootSMSsite_$(&lt;span class=&quot;pl-smi&quot;&gt;$SiteCode&lt;/span&gt;):SMS_SoftwareUpdatesPackage.PackageID=&amp;apos;$(&lt;span class=&quot;pl-smi&quot;&gt;$PackageID&lt;/span&gt;)&amp;apos;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L153&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;153&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC153&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                        &lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; (&lt;span class=&quot;pl-smi&quot;&gt;$DeploymentPackage&lt;span class=&quot;pl-smi&quot;&gt;.PackageID&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-notin&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;$DeploymentPackageList&lt;/span&gt;) {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L154&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;154&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC154&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                            &lt;span class=&quot;pl-smi&quot;&gt;$DeploymentPackageList&lt;span class=&quot;pl-smi&quot;&gt;.Add&lt;/span&gt;&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;$DeploymentPackage&lt;span class=&quot;pl-smi&quot;&gt;.PackageID&lt;/span&gt;&lt;/span&gt;) &lt;span class=&quot;pl-k&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;Out-Null&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L155&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;155&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC155&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                        }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L156&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;156&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC156&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                        &lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; (&lt;span class=&quot;pl-c1&quot;&gt;$PSCmdlet&lt;span class=&quot;pl-smi&quot;&gt;.ShouldProcess&lt;/span&gt;&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;$(&lt;span class=&quot;pl-smi&quot;&gt;$PackageID&lt;/span&gt;)&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Remove ContentID &amp;apos;$(&lt;span class=&quot;pl-smi&quot;&gt;$ContentID&lt;/span&gt;)&amp;apos;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;)) {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L157&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;157&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC157&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                            &lt;span class=&quot;pl-c1&quot;&gt;Write-Verbose&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Message &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Attempting to remove ContentID &amp;apos;$(&lt;span class=&quot;pl-smi&quot;&gt;$ContentID&lt;/span&gt;)&amp;apos; from PackageID &amp;apos;$(&lt;span class=&quot;pl-smi&quot;&gt;$PackageID&lt;/span&gt;)&amp;apos;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L158&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;158&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC158&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                            &lt;span class=&quot;pl-smi&quot;&gt;$ReturnValue&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;$DeploymentPackage&lt;span class=&quot;pl-smi&quot;&gt;.RemoveContent&lt;/span&gt;&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;$ContentID&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;$false&lt;/span&gt;)&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L159&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;159&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC159&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                            &lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; (&lt;span class=&quot;pl-smi&quot;&gt;$ReturnValue&lt;span class=&quot;pl-smi&quot;&gt;.ReturnValue&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-eq&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;0&lt;/span&gt;) {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L160&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;160&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC160&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                                &lt;span class=&quot;pl-c1&quot;&gt;Write-Verbose&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Message &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Successfully removed ContentID &amp;apos;$(&lt;span class=&quot;pl-smi&quot;&gt;$ContentID&lt;/span&gt;)&amp;apos; from PackageID &amp;apos;$(&lt;span class=&quot;pl-smi&quot;&gt;$PackageID&lt;/span&gt;)&amp;apos;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L161&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;161&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC161&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                            }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L162&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;162&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC162&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                        }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L163&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;163&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC163&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                    }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L164&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;164&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC164&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L165&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;165&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC165&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                            }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L166&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;166&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC166&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                            &lt;span class=&quot;pl-k&quot;&gt;catch&lt;/span&gt; [&lt;span class=&quot;pl-k&quot;&gt;Exception&lt;/span&gt;] {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L167&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;167&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC167&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                &lt;span class=&quot;pl-c1&quot;&gt;Write-Warning&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Message &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;An error occured when attempting to remove ContentID &amp;apos;$(&lt;span class=&quot;pl-smi&quot;&gt;$ContentID&lt;/span&gt;)&amp;apos; from &amp;apos;$(&lt;span class=&quot;pl-smi&quot;&gt;$PackageID&lt;/span&gt;)&amp;apos;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L168&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;168&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC168&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                            }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L169&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;169&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC169&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                        }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L170&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;170&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC170&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                    }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L171&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;171&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC171&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                    &lt;span class=&quot;pl-k&quot;&gt;catch&lt;/span&gt; [&lt;span class=&quot;pl-k&quot;&gt;Exception&lt;/span&gt;] {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L172&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;172&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC172&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                        &lt;span class=&quot;pl-c1&quot;&gt;Write-Warning&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Message &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Unable to save changes to &amp;apos;$(&lt;span class=&quot;pl-smi&quot;&gt;$AuthorizationList&lt;span class=&quot;pl-smi&quot;&gt;.LocalizedDisplayName&lt;/span&gt;&lt;/span&gt;)&amp;apos;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; ; &lt;span class=&quot;pl-k&quot;&gt;break&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L173&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;173&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC173&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                    }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L174&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;174&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC174&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L175&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;175&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC175&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                &lt;span class=&quot;pl-k&quot;&gt;else&lt;/span&gt; {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L176&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;176&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC176&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                    &lt;span class=&quot;pl-c1&quot;&gt;Write-Verbose&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Message &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;No changes detected, will not update &amp;apos;$(&lt;span class=&quot;pl-smi&quot;&gt;$AuthorizationList&lt;span class=&quot;pl-smi&quot;&gt;.LocalizedDisplayName&lt;/span&gt;&lt;/span&gt;)&amp;apos;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L177&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;177&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC177&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L178&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;178&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC178&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; Refresh content source for all Deployment Packages in the DeploymentPackageList array&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L179&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;179&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC179&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                &lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; ((&lt;span class=&quot;pl-smi&quot;&gt;$DeploymentPackageList&lt;span class=&quot;pl-smi&quot;&gt;.Count&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-ge&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;1&lt;/span&gt;) &lt;span class=&quot;pl-k&quot;&gt;-and&lt;/span&gt; (&lt;span class=&quot;pl-c1&quot;&gt;$PSBoundParameters&lt;/span&gt;[&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;RemoveContent&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;])) {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L180&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;180&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC180&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                    &lt;span class=&quot;pl-k&quot;&gt;foreach&lt;/span&gt; (&lt;span class=&quot;pl-smi&quot;&gt;$DPackageID&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;$DeploymentPackageList&lt;/span&gt;) {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L181&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;181&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC181&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                        &lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; (&lt;span class=&quot;pl-c1&quot;&gt;$PSCmdlet&lt;span class=&quot;pl-smi&quot;&gt;.ShouldProcess&lt;/span&gt;&lt;/span&gt;(&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;$(&lt;span class=&quot;pl-smi&quot;&gt;$DPackageID&lt;/span&gt;)&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Refresh content source&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;)) {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L182&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;182&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC182&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                            &lt;span class=&quot;pl-smi&quot;&gt;$DPackage&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; [&lt;span class=&quot;pl-k&quot;&gt;wmi&lt;/span&gt;]&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;$(&lt;span class=&quot;pl-smi&quot;&gt;$SiteServer&lt;/span&gt;)rootSMSsite_$(&lt;span class=&quot;pl-smi&quot;&gt;$SiteCode&lt;/span&gt;):SMS_SoftwareUpdatesPackage.PackageID=&amp;apos;$(&lt;span class=&quot;pl-smi&quot;&gt;$DPackageID&lt;/span&gt;)&amp;apos;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L183&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;183&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC183&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                            &lt;span class=&quot;pl-c1&quot;&gt;Write-Verbose&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Message &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Attempting to refresh content source for Deployment Package &amp;apos;$(&lt;span class=&quot;pl-smi&quot;&gt;$DPackage&lt;span class=&quot;pl-smi&quot;&gt;.Name&lt;/span&gt;&lt;/span&gt;)&amp;apos;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L184&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;184&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC184&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                            &lt;span class=&quot;pl-smi&quot;&gt;$ReturnValue&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;$DPackage&lt;span class=&quot;pl-smi&quot;&gt;.RefreshPkgSource&lt;/span&gt;&lt;/span&gt;()&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L185&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;185&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC185&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                            &lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; (&lt;span class=&quot;pl-smi&quot;&gt;$ReturnValue&lt;span class=&quot;pl-smi&quot;&gt;.ReturnValue&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-eq&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;0&lt;/span&gt;) {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L186&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;186&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC186&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                                &lt;span class=&quot;pl-c1&quot;&gt;Write-Verbose&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Message &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Successfully refreshed content source for Deployment Package &amp;apos;$(&lt;span class=&quot;pl-smi&quot;&gt;$DPackage&lt;span class=&quot;pl-smi&quot;&gt;.Name&lt;/span&gt;&lt;/span&gt;)&amp;apos;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L187&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;187&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC187&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                            }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L188&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;188&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC188&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                        }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L189&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;189&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC189&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                    }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L190&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;190&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC190&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L191&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;191&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC191&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L192&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;192&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC192&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L193&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;193&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC193&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-k&quot;&gt;else&lt;/span&gt; {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L194&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;194&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC194&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            &lt;span class=&quot;pl-c1&quot;&gt;Write-Warning&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Message &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Unable to locate any Software Update Groups&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L195&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;195&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC195&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L196&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;196&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC196&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L197&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;197&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC197&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;catch&lt;/span&gt; [&lt;span class=&quot;pl-k&quot;&gt;Exception&lt;/span&gt;] {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L198&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;198&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC198&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-c1&quot;&gt;Write-Error&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Message &lt;span class=&quot;pl-c1&quot;&gt;$_&lt;span class=&quot;pl-smi&quot;&gt;.Exception.Message&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L199&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;199&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC199&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L200&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;200&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC200&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;}&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L201&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;201&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC201&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;End&lt;/span&gt; {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L202&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;202&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC202&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; Temporarily set ErrorActionPreference&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L203&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;203&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC203&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-c1&quot;&gt;$ErrorActionPreference&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Continue&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L204&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;204&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC204&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; Complete write progress activity    &lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L205&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;205&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC205&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; (&lt;span class=&quot;pl-c1&quot;&gt;$PSBoundParameters&lt;/span&gt;[&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;ShowProgress&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;]) {&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L206&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;206&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC206&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-c1&quot;&gt;Write-Progress&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Activity &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Processing Software Update Groups&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Completed &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;ErrorAction SilentlyContinue&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L207&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;207&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC207&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L208&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;208&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC208&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt; Output script exection time&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L209&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;209&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC209&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-smi&quot;&gt;$StartTime&lt;span class=&quot;pl-smi&quot;&gt;.Stop&lt;/span&gt;&lt;/span&gt;()&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L210&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;210&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC210&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-c1&quot;&gt;Write-Verbose&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Message &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;Script execution: $(&lt;span class=&quot;pl-smi&quot;&gt;$StartTime&lt;span class=&quot;pl-smi&quot;&gt;.Elapsed.Minutes&lt;/span&gt;&lt;/span&gt;) min and $(&lt;span class=&quot;pl-smi&quot;&gt;$StartTime&lt;span class=&quot;pl-smi&quot;&gt;.Elapsed.Seconds&lt;/span&gt;&lt;/span&gt;) seconds&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-L211&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;211&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-clean-cmsoftwareupdategroups-ps1-LC211&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;}&lt;/td&gt;    &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;    &lt;/div&gt;    &lt;div class=&quot;gist-meta&quot;&gt;      &lt;a href=&quot;https://gist.github.com/richard24se/07802c739c3d37ee9100599ed76962e4/raw/479001a5be1b656d290c4bec2f02189b52fc8f7d/Clean-CMSoftwareUpdateGroups.ps1&quot; style=&quot;float:right&quot;&gt;view raw&lt;/a&gt;      &lt;a href=&quot;https://gist.github.com/richard24se/07802c739c3d37ee9100599ed76962e4#file-clean-cmsoftwareupdategroups-ps1&quot;&gt;Clean-CMSoftwareUpdateGroups.ps1&lt;/a&gt;      hosted with &amp;#x2764; by &lt;a href=&quot;https://github.com&quot;&gt;GitHub&lt;/a&gt;    &lt;/div&gt;  &lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Guardas el script y lo ejecutas de 2 modos:&lt;/p&gt;
&lt;p&gt;S&amp;#xF3;lo eliminar los expirados, y el otro expirados y los sustituidos. Para ejecutar el script es importante reemplazar la variable &lt;strong&gt;SERVIDOR&lt;/strong&gt; por la de vuestro servidor SCCM&lt;/p&gt;
&lt;pre&gt;#JUST EXPIRED&lt;br&gt;.\Clean-CMSoftwareUpdateGroups.ps1 -SiteServer SERVIDOR -Option ExpiredOnly -Verbose -RemoveContent -ShowProgress&lt;br&gt;&lt;br&gt;#EXPIRED AND SUPERSEDED&lt;br&gt;.\Clean-CMSoftwareUpdateGroups.ps1 -SiteServer SERVIDOR -Option ExpiredSuperseded -Verbose -RemoveContent -ShowProgress&lt;/pre&gt;
&lt;p&gt;Hasta pronto!&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Defragmentación a partir de la detección de la fragmentación de la DB en SQL Server</title>
        <link>https://fausto.app/notes/defragmentacion-a-partir-de-la-deteccion-de-la-fragmentacion-de-la-db-en-sql-server</link>
        <guid>https://fausto.app/notes/defragmentacion-a-partir-de-la-deteccion-de-la-fragmentacion-de-la-db-en-sql-server</guid>
        <pubDate>jue., 14 feb. 2019 14:33:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola a todos!&lt;/p&gt;
&lt;p&gt;Compartir&amp;#xE9; un script que permite desfragmentar autom&amp;#xE1;ticamente las tablas que est&amp;#xE1;n muy fragmentadas de una DB en SQL Server. Es muy &amp;#xFA;til ya que ayuda a acelerar y simplificar el mantenimiento de la DB.&lt;/p&gt;
&lt;div data-embed=&quot;true&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;https://github.githubassets.com/assets/gist-embed-b3b573358bfc66d89e1e95dbf8319c09.css&quot;&gt;
&lt;div id=&quot;gist94654276&quot; class=&quot;gist&quot;&gt;  &lt;div class=&quot;gist-file&quot;&gt;    &lt;div class=&quot;gist-data&quot;&gt;      &lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;&lt;div id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql&quot; class=&quot;file&quot;&gt;  &lt;div itemprop=&quot;text&quot; class=&quot;blob-wrapper data type-plpgsql &quot;&gt;    &lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot;&gt;    &lt;tbody&gt;&lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L1&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC1&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L2&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC2&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;--&lt;/span&gt; Set variables BEFORE RUN THIS SQL&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L3&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC3&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;--&lt;/span&gt; richard.24.se@gmail.com&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L4&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC4&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;--&lt;/span&gt; *********************************************************************************************&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L5&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC5&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;SET&lt;/span&gt; NOCOUNT &lt;span class=&quot;pl-k&quot;&gt;ON&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L6&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;6&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC6&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L7&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;7&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC7&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;DECLARE @reorg_frag_thresh   float     &lt;span class=&quot;pl-k&quot;&gt;SET&lt;/span&gt; @reorg_frag_thresh        &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;10&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;0&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L8&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;8&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC8&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;DECLARE @rebuild_frag_thresh float      &lt;span class=&quot;pl-k&quot;&gt;SET&lt;/span&gt; @rebuild_frag_thresh &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;30&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;0&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L9&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;9&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC9&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;DECLARE @fill_factor         tinyint &lt;span class=&quot;pl-k&quot;&gt;SET&lt;/span&gt; @fill_factor &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;0&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L10&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;10&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC10&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;DECLARE @report_only         &lt;span class=&quot;pl-k&quot;&gt;bit&lt;/span&gt;      &lt;span class=&quot;pl-k&quot;&gt;SET&lt;/span&gt; @report_only &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;0&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L11&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;11&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC11&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;DECLARE @page_count_thresh   &lt;span class=&quot;pl-k&quot;&gt;smallint&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;SET&lt;/span&gt; @page_count_thresh &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;1&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L12&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;12&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC12&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;--&lt;/span&gt; *********************************************************************************************&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L13&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;13&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC13&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;DECLARE @objectid       &lt;span class=&quot;pl-k&quot;&gt;int&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L14&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;14&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC14&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;DECLARE @indexid        &lt;span class=&quot;pl-k&quot;&gt;int&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L15&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;15&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC15&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;DECLARE @partitioncount &lt;span class=&quot;pl-k&quot;&gt;bigint&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L16&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;16&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC16&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;DECLARE @schemaname     nvarchar(&lt;span class=&quot;pl-c1&quot;&gt;130&lt;/span&gt;) &lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L17&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;17&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC17&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;DECLARE @objectname     nvarchar(&lt;span class=&quot;pl-c1&quot;&gt;130&lt;/span&gt;) &lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L18&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;18&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC18&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;DECLARE @indexname      nvarchar(&lt;span class=&quot;pl-c1&quot;&gt;130&lt;/span&gt;) &lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L19&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;19&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC19&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;DECLARE @partitionnum   &lt;span class=&quot;pl-k&quot;&gt;bigint&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L20&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;20&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC20&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;DECLARE @partitions     &lt;span class=&quot;pl-k&quot;&gt;bigint&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L21&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;21&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC21&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;DECLARE @frag           float&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L22&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;22&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC22&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;DECLARE @page_count     &lt;span class=&quot;pl-k&quot;&gt;int&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L23&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;23&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC23&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;DECLARE @command        nvarchar(&lt;span class=&quot;pl-c1&quot;&gt;4000&lt;/span&gt;)&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L24&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;24&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC24&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;DECLARE @intentions     nvarchar(&lt;span class=&quot;pl-c1&quot;&gt;4000&lt;/span&gt;)&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L25&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;25&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC25&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;DECLARE @table_var      TABLE(&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L26&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;26&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC26&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                          objectid     &lt;span class=&quot;pl-k&quot;&gt;int&lt;/span&gt;,&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L27&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;27&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC27&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                          indexid      &lt;span class=&quot;pl-k&quot;&gt;int&lt;/span&gt;,&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L28&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;28&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC28&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                          partitionnum &lt;span class=&quot;pl-k&quot;&gt;int&lt;/span&gt;,&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L29&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;29&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC29&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                          frag         float,&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L30&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;30&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC30&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;              page_count   &lt;span class=&quot;pl-k&quot;&gt;int&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L31&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;31&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC31&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;                        )&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L32&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;32&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC32&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;INSERT INTO&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L33&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;33&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC33&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    @table_var&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L34&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;34&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC34&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;SELECT&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L35&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;35&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC35&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    [object_id]                    &lt;span class=&quot;pl-k&quot;&gt;AS&lt;/span&gt; objectid,&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L36&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;36&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC36&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    [index_id]                     &lt;span class=&quot;pl-k&quot;&gt;AS&lt;/span&gt; indexid,&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L37&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;37&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC37&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    [partition_number]             &lt;span class=&quot;pl-k&quot;&gt;AS&lt;/span&gt; partitionnum,&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L38&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;38&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC38&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    [avg_fragmentation_in_percent] &lt;span class=&quot;pl-k&quot;&gt;AS&lt;/span&gt; frag,&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L39&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;39&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC39&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    [page_count]               &lt;span class=&quot;pl-k&quot;&gt;AS&lt;/span&gt; page_count&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L40&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;40&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC40&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;FROM&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L41&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;41&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC41&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-c1&quot;&gt;sys&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;dm_db_index_physical_stats&lt;/span&gt; (DB_ID(), &lt;span class=&quot;pl-k&quot;&gt;NULL&lt;/span&gt;, &lt;span class=&quot;pl-k&quot;&gt;NULL&lt;/span&gt; , &lt;span class=&quot;pl-k&quot;&gt;NULL&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;LIMITED&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;)&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L42&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;42&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC42&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;WHERE&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L43&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;43&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC43&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    [avg_fragmentation_in_percent] &lt;span class=&quot;pl-k&quot;&gt;&amp;gt;&lt;/span&gt; @reorg_frag_thresh &lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L44&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;44&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC44&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;  &lt;span class=&quot;pl-k&quot;&gt;AND&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L45&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;45&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC45&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt; page_count &lt;span class=&quot;pl-k&quot;&gt;&amp;gt;&lt;/span&gt; @page_count_thresh&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L46&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;46&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC46&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;  &lt;span class=&quot;pl-k&quot;&gt;AND&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L47&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;47&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC47&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    index_id &lt;span class=&quot;pl-k&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;0&lt;/span&gt;      &lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L48&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;48&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC48&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt; DECLARE partitions CURSOR FOR&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L49&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;49&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC49&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;FROM&lt;/span&gt; @table_var &lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L50&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;50&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC50&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;OPEN partitions &lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L51&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;51&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC51&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;WHILE (&lt;span class=&quot;pl-c1&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;1&lt;/span&gt;) &lt;span class=&quot;pl-k&quot;&gt;BEGIN&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L52&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;52&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC52&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    FETCH NEXT&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L53&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;53&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC53&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-k&quot;&gt;FROM&lt;/span&gt; partitions&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L54&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;54&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC54&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        INTO @objectid, @indexid, @partitionnum, @frag, @page_count &lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L55&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;55&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC55&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    IF @@FETCH_STATUS &lt;span class=&quot;pl-k&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;0&lt;/span&gt; BREAK&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L56&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;56&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC56&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;SELECT&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L57&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;57&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC57&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        @objectname &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; QUOTENAME(o.[name]),&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L58&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;58&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC58&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        @schemaname &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; QUOTENAME(s.[name])&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L59&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;59&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC59&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;FROM&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L60&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;60&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC60&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-c1&quot;&gt;sys&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;objects&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;AS&lt;/span&gt; o WITH (NOLOCK)&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L61&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;61&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC61&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-k&quot;&gt;JOIN&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;sys&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;schemas&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;AS&lt;/span&gt; s WITH (NOLOCK)&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L62&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;62&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC62&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-k&quot;&gt;ON&lt;/span&gt; s.[schema_id] &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; o.[schema_id]&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L63&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;63&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC63&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;WHERE&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L64&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;64&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC64&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        o.[object_id] &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; @objectid &lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L65&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;65&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC65&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;SELECT&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L66&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;66&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC66&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        @indexname &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; QUOTENAME([name])&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L67&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;67&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC67&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;FROM&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L68&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;68&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC68&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-c1&quot;&gt;sys&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;indexes&lt;/span&gt; WITH (NOLOCK)&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L69&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;69&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC69&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;WHERE&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L70&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;70&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC70&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        [object_id] &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; @objectid &lt;span class=&quot;pl-k&quot;&gt;AND&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L71&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;71&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC71&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        [index_id] &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; @indexid &lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L72&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;72&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC72&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;SELECT&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L73&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;73&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC73&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        @partitioncount &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;count&lt;/span&gt; (&lt;span class=&quot;pl-k&quot;&gt;*&lt;/span&gt;)&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L74&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;74&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC74&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;FROM&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L75&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;75&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC75&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-c1&quot;&gt;sys&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;partitions&lt;/span&gt; WITH (NOLOCK)&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L76&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;76&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC76&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;WHERE&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L77&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;77&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC77&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        [object_id] &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; @objectid &lt;span class=&quot;pl-k&quot;&gt;AND&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L78&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;78&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC78&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        [index_id] &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; @indexid             &lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L79&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;79&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC79&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;SET&lt;/span&gt; @intentions &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L80&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;80&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC80&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        @schemaname &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; N&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;.&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L81&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;81&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC81&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        @objectname &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; N&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;.&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L82&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;82&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC82&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        @indexname &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; N&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;:&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;CHAR&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;13&lt;/span&gt;) &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;CHAR&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;10&lt;/span&gt;)&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L83&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;83&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC83&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;SET&lt;/span&gt; @intentions &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L84&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;84&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC84&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        REPLACE(SPACE(LEN(@intentions)), &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt; &lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;=&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;) &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;CHAR&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;13&lt;/span&gt;) &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;CHAR&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;10&lt;/span&gt;) &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L85&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;85&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC85&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        @intentions&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L86&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;86&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC86&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;SET&lt;/span&gt; @intentions &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; @intentions &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L87&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;87&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC87&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        N&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt; FRAGMENTATION: &lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; CAST(@frag &lt;span class=&quot;pl-k&quot;&gt;AS&lt;/span&gt; nvarchar) &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; N&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;%&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;CHAR&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;13&lt;/span&gt;) &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;CHAR&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;10&lt;/span&gt;) &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L88&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;88&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC88&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        N&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt; PAGE COUNT: &lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;    &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; CAST(@page_count &lt;span class=&quot;pl-k&quot;&gt;AS&lt;/span&gt; nvarchar) &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;CHAR&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;13&lt;/span&gt;) &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;CHAR&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;10&lt;/span&gt;) &lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L89&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;89&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC89&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    IF @frag &lt;span class=&quot;pl-k&quot;&gt;&amp;lt;&lt;/span&gt; @rebuild_frag_thresh &lt;span class=&quot;pl-k&quot;&gt;BEGIN&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L90&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;90&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC90&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-k&quot;&gt;SET&lt;/span&gt; @intentions &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; @intentions &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L91&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;91&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC91&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            N&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt; OPERATION: REORGANIZE&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;CHAR&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;13&lt;/span&gt;) &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;CHAR&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;10&lt;/span&gt;)&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L92&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;92&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC92&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-k&quot;&gt;SET&lt;/span&gt; @command &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L93&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;93&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC93&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            N&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;ALTER INDEX &lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; @indexname &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L94&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;94&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC94&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            N&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt; ON &lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; @schemaname &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; N&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;.&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; @objectname &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L95&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;95&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC95&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            N&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt; REORGANIZE; &lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; &lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L96&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;96&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC96&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            N&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt; UPDATE STATISTICS &lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; @schemaname &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; N&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;.&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; @objectname &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; &lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L97&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;97&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC97&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            N&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt; &lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; @indexname &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L98&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;98&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC98&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    END&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L99&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;99&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC99&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    IF @frag &lt;span class=&quot;pl-k&quot;&gt;&amp;gt;=&lt;/span&gt; @rebuild_frag_thresh &lt;span class=&quot;pl-k&quot;&gt;BEGIN&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L100&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;100&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC100&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-k&quot;&gt;SET&lt;/span&gt; @intentions &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; @intentions &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L101&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;101&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC101&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            N&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt; OPERATION: REBUILD&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;CHAR&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;13&lt;/span&gt;) &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;CHAR&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;10&lt;/span&gt;)&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L102&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;102&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC102&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-k&quot;&gt;SET&lt;/span&gt; @command &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L103&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;103&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC103&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            N&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;ALTER INDEX &lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; @indexname &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L104&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;104&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC104&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            N&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt; ON &lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; @schemaname &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; N&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;.&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt;     @objectname &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L105&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;105&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC105&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            N&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt; REBUILD&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L106&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;106&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC106&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    END&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L107&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;107&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC107&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    IF @partitioncount &lt;span class=&quot;pl-k&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;BEGIN&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L108&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;108&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC108&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-k&quot;&gt;SET&lt;/span&gt; @intentions &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; @intentions &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L109&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;109&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC109&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            N&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt; PARTITION: &lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; CAST(@partitionnum &lt;span class=&quot;pl-k&quot;&gt;AS&lt;/span&gt; nvarchar(&lt;span class=&quot;pl-c1&quot;&gt;10&lt;/span&gt;)) &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;CHAR&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;13&lt;/span&gt;) &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;CHAR&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;10&lt;/span&gt;)&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L110&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;110&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC110&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-k&quot;&gt;SET&lt;/span&gt; @command &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; @command &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L111&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;111&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC111&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            N&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt; PARTITION=&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; CAST(@partitionnum &lt;span class=&quot;pl-k&quot;&gt;AS&lt;/span&gt; nvarchar(&lt;span class=&quot;pl-c1&quot;&gt;10&lt;/span&gt;))&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L112&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;112&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC112&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    END&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L113&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;113&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC113&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    IF @frag &lt;span class=&quot;pl-k&quot;&gt;&amp;gt;=&lt;/span&gt; @rebuild_frag_thresh &lt;span class=&quot;pl-k&quot;&gt;AND&lt;/span&gt; @fill_factor &lt;span class=&quot;pl-k&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;AND&lt;/span&gt; @fill_factor &lt;span class=&quot;pl-k&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;100&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;BEGIN&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L114&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;114&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC114&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-k&quot;&gt;SET&lt;/span&gt; @intentions &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; @intentions &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L115&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;115&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC115&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            N&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt; FILL FACTOR: &lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; CAST(@fill_factor &lt;span class=&quot;pl-k&quot;&gt;AS&lt;/span&gt; nvarchar) &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;CHAR&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;13&lt;/span&gt;) &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;CHAR&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;10&lt;/span&gt;)&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L116&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;116&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC116&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-k&quot;&gt;SET&lt;/span&gt; @command &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; @command &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L117&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;117&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC117&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            N&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt; WITH (FILLFACTOR = &lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; CAST(@fill_factor &lt;span class=&quot;pl-k&quot;&gt;AS&lt;/span&gt; nvarchar) &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;)&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L118&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;118&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC118&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    END&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L119&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;119&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC119&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    IF @report_only &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;BEGIN&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L120&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;120&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC120&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-k&quot;&gt;SET&lt;/span&gt; @intentions &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; @intentions &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; N&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt; EXECUTING: &lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;+&lt;/span&gt; @command&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L121&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;121&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC121&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        PRINT @intentions     &lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L122&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;122&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC122&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        EXEC (@command)&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L123&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;123&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC123&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    END ELSE &lt;span class=&quot;pl-k&quot;&gt;BEGIN&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L124&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;124&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC124&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        PRINT @intentions&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L125&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;125&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC125&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    END&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L126&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;126&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC126&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        PRINT @command&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L127&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;127&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC127&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;END&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L128&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;128&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC128&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;CLOSE partitions&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L129&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;129&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC129&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;DEALLOCATE partitions&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L130&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;130&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC130&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;GO&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L131&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;131&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC131&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L132&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;132&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC132&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;         &lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-L133&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;133&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-detect-fragmentaion-and-apply-defragmention-db-sql-LC133&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;Alter&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;table&lt;/span&gt; Relationship rebuild&lt;/td&gt;    &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;    &lt;/div&gt;    &lt;div class=&quot;gist-meta&quot;&gt;      &lt;a href=&quot;https://gist.github.com/richard24se/3a325af98100b49119a02c44cf90eb0e/raw/0c1c91b01c6912978d3f1c79074682b416ea9455/Detect%20fragmentaion%20and%20apply%20defragmention%20DB.sql&quot; style=&quot;float:right&quot;&gt;view raw&lt;/a&gt;      &lt;a href=&quot;https://gist.github.com/richard24se/3a325af98100b49119a02c44cf90eb0e#file-detect-fragmentaion-and-apply-defragmention-db-sql&quot;&gt;Detect fragmentaion and apply defragmention DB.sql&lt;/a&gt;      hosted with &amp;#x2764; by &lt;a href=&quot;https://github.com&quot;&gt;GitHub&lt;/a&gt;    &lt;/div&gt;  &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Hasta pronto!&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Mostrar la fragmentación de una base de datos SQL Server</title>
        <link>https://fausto.app/notes/mostrar-la-fragmentacion-de-una-base-de-datos-sql-server</link>
        <guid>https://fausto.app/notes/mostrar-la-fragmentacion-de-una-base-de-datos-sql-server</guid>
        <pubDate>jue., 14 feb. 2019 14:27:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola a todos!&lt;/p&gt;
&lt;p&gt;Compartir&amp;#xE9; este peque&amp;#xF1;o query para mostrar la fragmentaci&amp;#xF3;n que tiene una base de datos SQL Server.&lt;/p&gt;
&lt;div data-embed=&quot;true&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;https://github.githubassets.com/assets/gist-embed-b3b573358bfc66d89e1e95dbf8319c09.css&quot;&gt;
&lt;div id=&quot;gist94654198&quot; class=&quot;gist&quot;&gt;  &lt;div class=&quot;gist-file&quot;&gt;    &lt;div class=&quot;gist-data&quot;&gt;      &lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;&lt;div id=&quot;file-show-fragmetation-sql&quot; class=&quot;file&quot;&gt;  &lt;div itemprop=&quot;text&quot; class=&quot;blob-wrapper data type-sql &quot;&gt;    &lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot;&gt;    &lt;tbody&gt;&lt;tr&gt;      &lt;td id=&quot;file-show-fragmetation-sql-L1&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-show-fragmetation-sql-LC1&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;Select&lt;/span&gt; DB_NAME (database_id) &lt;span class=&quot;pl-k&quot;&gt;AS&lt;/span&gt; [Database Name], OBJECT_NAME(&lt;span class=&quot;pl-c1&quot;&gt;ps&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;object_id&lt;/span&gt;) &lt;span class=&quot;pl-k&quot;&gt;AS&lt;/span&gt; [Object Name],&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-show-fragmetation-sql-L2&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-show-fragmetation-sql-LC2&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;       &lt;span class=&quot;pl-c1&quot;&gt;i&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;AS&lt;/span&gt; [Index Name], &lt;span class=&quot;pl-c1&quot;&gt;ps&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;index_id&lt;/span&gt;, index_type_desc,&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-show-fragmetation-sql-L3&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-show-fragmetation-sql-LC3&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;       avg_fragmentation_in_percent, fragment_count, page_count&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-show-fragmetation-sql-L4&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-show-fragmetation-sql-LC4&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;sys&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;dm_db_index_physical_stats&lt;/span&gt;(DB_ID(),&lt;span class=&quot;pl-k&quot;&gt;NULL&lt;/span&gt;, &lt;span class=&quot;pl-k&quot;&gt;NULL&lt;/span&gt;, &lt;span class=&quot;pl-k&quot;&gt;NULL&lt;/span&gt; ,N&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;LIMITED&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;) &lt;span class=&quot;pl-k&quot;&gt;AS&lt;/span&gt; ps&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-show-fragmetation-sql-L5&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-show-fragmetation-sql-LC5&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;       &lt;span class=&quot;pl-k&quot;&gt;INNER JOIN&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;sys&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;indexes&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;AS&lt;/span&gt; i WITH (NOLOCK)&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-show-fragmetation-sql-L6&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;6&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-show-fragmetation-sql-LC6&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;       &lt;span class=&quot;pl-k&quot;&gt;ON&lt;/span&gt; ps.[object_id] &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; i.[object_id] &lt;span class=&quot;pl-k&quot;&gt;AND&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;ps&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;index_id&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;i&lt;/span&gt;.&lt;span class=&quot;pl-c1&quot;&gt;index_id&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-show-fragmetation-sql-L7&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;7&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-show-fragmetation-sql-LC7&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;WHERE&lt;/span&gt; database_id &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; DB_ID()&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-show-fragmetation-sql-L8&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;8&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-show-fragmetation-sql-LC8&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;AND&lt;/span&gt; page_count &lt;span class=&quot;pl-k&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;1500&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-show-fragmetation-sql-L9&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;9&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-show-fragmetation-sql-LC9&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;ORDER BY&lt;/span&gt; avg_fragmentation_in_percent &lt;span class=&quot;pl-k&quot;&gt;DESC&lt;/span&gt; OPTION (RECOMPILE);&lt;/td&gt;    &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;    &lt;/div&gt;    &lt;div class=&quot;gist-meta&quot;&gt;      &lt;a href=&quot;https://gist.github.com/richard24se/cee93bab3e3029bda0c72cf69ec3033f/raw/389821c34eb58b1d6f4511b410171e2ff7595c13/show%20fragmetation.sql&quot; style=&quot;float:right&quot;&gt;view raw&lt;/a&gt;      &lt;a href=&quot;https://gist.github.com/richard24se/cee93bab3e3029bda0c72cf69ec3033f#file-show-fragmetation-sql&quot;&gt;show fragmetation.sql&lt;/a&gt;      hosted with &amp;#x2764; by &lt;a href=&quot;https://github.com&quot;&gt;GitHub&lt;/a&gt;    &lt;/div&gt;  &lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Hasta pronto!&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Reporte de Office 365 para liberar licencias en desuso</title>
        <link>https://fausto.app/notes/reporte-de-office-365-para-liberar-licencias-en-desuso</link>
        <guid>https://fausto.app/notes/reporte-de-office-365-para-liberar-licencias-en-desuso</guid>
        <pubDate>mié., 13 feb. 2019 15:42:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola a todos!&lt;/p&gt;
&lt;p&gt;Mostrar&amp;#xE9; un script para liberar las licencias en desuso del Office 365. Este mostrar&amp;#xE1; los usuarios que no env&amp;#xED;en correo desde hace 30 d&amp;#xED;as. Para esto primero te invito a conectarte al powershell del Office 365. Sino sabes como, entra al siguiente link:&lt;/p&gt;
&lt;div data-embed=&quot;true&quot;&gt;&lt;aside class=&quot;embed-card&quot;&gt;&lt;article&gt;&lt;img src=&quot;https://fausto.app/uploads/2019/02/powershell3_2.png&quot;&gt;&lt;h3&gt;&lt;a href=&quot;https://fausto.app/notes/conexion-remota-a-powershell-de-office-365&quot;&gt;Conexi&amp;#xF3;n remota a Powershell de Office 365&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Hola a todos! Veremos c&amp;#xF3;mo conectarnos remotamente a la consola de Office 365. function Connect-O365(){ Import-Module msonline #USUARIO $userL=&amp;quot;USUARIO DE ADMINISTRADOR GLOBAL&amp;quot; #CONTRASE&amp;#xD1;A $passL=&amp;apos;CONTRASE&amp;#xD1;A DE ADMINISTRADOR GLOBAL&amp;apos; #ENCRIPTA LA CONTRASE&amp;#xD1;A $encrypted = ConvertTo-SecureString $passL &amp;#x2013;asplaintext &amp;#x2013;force $cred= New-Object System.Management.Automation.PsCredential($userL, $encrypted) #CONEXI&amp;#xD3;N AL OFFICE365 $Credentials = $cred Import-Module msonline&lt;/p&gt;&lt;/article&gt;&lt;footer&gt;&lt;img src=&quot;https://fausto.app/uploads/2019/01/devop_logo_1.png?thumbnail=256&amp;amp;key=97c49f839ecff98ab1dbc46a04a1444c7f429f03474c47914788ba68c0efb771&quot;&gt;&lt;a href=&quot;https://fausto.app/notes/conexion-remota-a-powershell-de-office-365&quot;&gt;El blog de Fausto&lt;/a&gt;&lt;/footer&gt;&lt;/aside&gt;&lt;/div&gt;
&lt;p&gt;Una vez conectado al powershell de Office 365 se procede a ejecutar el el siguiente script:&lt;/p&gt;
&lt;p&gt;Para esto se necesita cambiar el &lt;strong&gt;NOMBRE_DE_REPORTE&lt;/strong&gt;&amp;#xA0;&amp;#xA0;&lt;/p&gt;
&lt;div data-embed=&quot;true&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;https://github.githubassets.com/assets/gist-embed-b3b573358bfc66d89e1e95dbf8319c09.css&quot;&gt;
&lt;div id=&quot;gist94635857&quot; class=&quot;gist&quot;&gt;  &lt;div class=&quot;gist-file&quot;&gt;    &lt;div class=&quot;gist-data&quot;&gt;      &lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;&lt;div id=&quot;file-o365-licence-report-ps1&quot; class=&quot;file&quot;&gt;  &lt;div itemprop=&quot;text&quot; class=&quot;blob-wrapper data type-powershell &quot;&gt;    &lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot;&gt;    &lt;tbody&gt;&lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L1&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC1&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt;##REPORT SEND&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L2&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC2&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-smi&quot;&gt;$dateEnd&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;get-date&lt;/span&gt; &lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L3&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC3&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-smi&quot;&gt;$dateStart&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;$dateEnd&lt;span class=&quot;pl-smi&quot;&gt;.AddHours&lt;/span&gt;&lt;/span&gt;(&lt;span class=&quot;pl-c1&quot;&gt;-720&lt;/span&gt;)&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L4&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC4&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L5&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC5&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-smi&quot;&gt;$start&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;get-date&lt;/span&gt; &lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L6&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;6&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC6&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;Write-Host&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;INICIA: &lt;span class=&quot;pl-smi&quot;&gt;$start&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L7&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;7&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC7&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;Get-mailbox&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;id &lt;span class=&quot;pl-k&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;Where-Object&lt;/span&gt; {(&lt;span class=&quot;pl-c1&quot;&gt;Get-MsolUser&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;UserPrincipalName &lt;span class=&quot;pl-c1&quot;&gt;$_&lt;span class=&quot;pl-smi&quot;&gt;.UserPrincipalName&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;|&lt;/span&gt; select &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;ExpandProperty IsLicensed &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;ErrorAction SilentlyContinue ) &lt;span class=&quot;pl-k&quot;&gt;-eq&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;true&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;} &lt;span class=&quot;pl-k&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;ForEach-Object&lt;/span&gt; { &lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L8&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;8&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC8&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L9&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;9&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC9&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt;LOGON TIME&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L10&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;10&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC10&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-smi&quot;&gt;$lgMail&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;$null&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L11&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;11&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC11&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-smi&quot;&gt;$lgAD&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;$null&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L12&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;12&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC12&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L13&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;13&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC13&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt;FLAG LOGON TIME&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L14&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;14&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC14&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-smi&quot;&gt;$lgMailF&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;$null&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L15&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;15&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC15&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-smi&quot;&gt;$lgADF&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;$null&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L16&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;16&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC16&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L17&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;17&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC17&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-smi&quot;&gt;$Warn&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;$null&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L18&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;18&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC18&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-smi&quot;&gt;$tokenRefresh&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;$null&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L19&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;19&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC19&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-smi&quot;&gt;$tokenRefresh&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;$_&lt;span class=&quot;pl-smi&quot;&gt;.StsRefreshTokensValidFrom&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L20&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;20&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC20&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L21&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;21&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC21&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-smi&quot;&gt;$email&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;$_&lt;span class=&quot;pl-smi&quot;&gt;.WindowsEmailAddress&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L22&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;22&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC22&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-smi&quot;&gt;$create&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;$_&lt;span class=&quot;pl-smi&quot;&gt;.WhenCreated&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L23&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;23&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC23&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-smi&quot;&gt;$country&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;$_&lt;span class=&quot;pl-smi&quot;&gt;.UsageLocation&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L24&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;24&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC24&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L25&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;25&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC25&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-smi&quot;&gt;$Sent&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;BAD&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L26&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;26&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC26&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L27&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;27&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC27&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L28&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;28&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC28&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt;LICENSE&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L29&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;29&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC29&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-smi&quot;&gt;$license&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;Get-MsolUser&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;UserPrincipalName &lt;span class=&quot;pl-c1&quot;&gt;$_&lt;span class=&quot;pl-smi&quot;&gt;.UserPrincipalName&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;|&lt;/span&gt; select &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;ExpandProperty Licenses &lt;span class=&quot;pl-k&quot;&gt;|&lt;/span&gt; select &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;ExpandProperty AccountSkuId;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L30&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;30&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC30&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-smi&quot;&gt;$key&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;null&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L31&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;31&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC31&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;$license&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-like&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;*ENTERPRISEWITHSCAL*&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;){&lt;span class=&quot;pl-smi&quot;&gt;$key&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;E4&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;}&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L32&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;32&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC32&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;$license&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-like&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;*ENTERPRISEPACK*&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;){&lt;span class=&quot;pl-smi&quot;&gt;$key&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;E3&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;}&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L33&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;33&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC33&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt;(&lt;span class=&quot;pl-smi&quot;&gt;$license&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-like&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;*STANDARDPACK*&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;){&lt;span class=&quot;pl-smi&quot;&gt;$key&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;E1&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;}&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L34&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;34&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC34&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L35&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;35&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC35&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    &lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; (&lt;span class=&quot;pl-smi&quot;&gt;$create&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-le&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;$dateStart&lt;/span&gt;){&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L36&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;36&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC36&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt;GET LAST MESSAGE&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L37&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;37&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC37&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-smi&quot;&gt;$flagSendMsg&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;Get-MessageTrace&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;StartDate &lt;span class=&quot;pl-smi&quot;&gt;$dateStart&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;EndDate &lt;span class=&quot;pl-smi&quot;&gt;$dateEnd&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;SenderAddress &lt;span class=&quot;pl-smi&quot;&gt;$email&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;Select-Object&lt;/span&gt; Received&lt;span class=&quot;pl-k&quot;&gt;,&lt;/span&gt; SenderAddress&lt;span class=&quot;pl-k&quot;&gt;,&lt;/span&gt; RecipientAddress&lt;span class=&quot;pl-k&quot;&gt;,&lt;/span&gt; Subject&lt;span class=&quot;pl-k&quot;&gt;,&lt;/span&gt; Status&lt;span class=&quot;pl-k&quot;&gt;,&lt;/span&gt; ToIP&lt;span class=&quot;pl-k&quot;&gt;,&lt;/span&gt; FromIP&lt;span class=&quot;pl-k&quot;&gt;,&lt;/span&gt; Size&lt;span class=&quot;pl-k&quot;&gt;,&lt;/span&gt; MessageID&lt;span class=&quot;pl-k&quot;&gt;,&lt;/span&gt; MessageTraceID &lt;span class=&quot;pl-k&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;Select-Object&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Last &lt;span class=&quot;pl-c1&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;ExpandProperty Received&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L38&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;38&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC38&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L39&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;39&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC39&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        &lt;span class=&quot;pl-k&quot;&gt;if&lt;/span&gt; (&lt;span class=&quot;pl-smi&quot;&gt;$flagSendMsg&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-ge&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;$dateStart&lt;/span&gt;){&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L40&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;40&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC40&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            &lt;span class=&quot;pl-smi&quot;&gt;$Sent&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;GOOD&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L41&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;41&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC41&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt;Write-Host $Sent&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L42&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;42&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC42&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        }&lt;span class=&quot;pl-k&quot;&gt;else&lt;/span&gt;{&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L43&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;43&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC43&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt;Write-Host $Sent&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L44&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;44&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC44&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt;SHOW RESULT&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L45&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;45&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC45&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            &lt;span class=&quot;pl-c1&quot;&gt;get-mailboxstatistics&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;id &lt;span class=&quot;pl-c1&quot;&gt;$_&lt;span class=&quot;pl-smi&quot;&gt;.UserPrincipalName&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;|&lt;/span&gt; select DisplayName&lt;span class=&quot;pl-k&quot;&gt;,&lt;/span&gt; LastLogonTime&lt;span class=&quot;pl-k&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;@&lt;/span&gt;{&lt;span class=&quot;pl-smi&quot;&gt;Name&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;SentMail&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;; &lt;span class=&quot;pl-smi&quot;&gt;Expression&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;{&lt;span class=&quot;pl-smi&quot;&gt;$Sent&lt;/span&gt;}}&lt;span class=&quot;pl-k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;@&lt;/span&gt;{&lt;span class=&quot;pl-smi&quot;&gt;Name&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;email&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;; &lt;span class=&quot;pl-smi&quot;&gt;Expression&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;{&lt;span class=&quot;pl-smi&quot;&gt;$email&lt;/span&gt;}}&lt;span class=&quot;pl-k&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;@&lt;/span&gt;{&lt;span class=&quot;pl-smi&quot;&gt;Name&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;created&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;; &lt;span class=&quot;pl-smi&quot;&gt;Expression&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;{&lt;span class=&quot;pl-smi&quot;&gt;$create&lt;/span&gt;}}&lt;span class=&quot;pl-k&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;@&lt;/span&gt;{&lt;span class=&quot;pl-smi&quot;&gt;Name&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;country&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;; &lt;span class=&quot;pl-smi&quot;&gt;Expression&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;{&lt;span class=&quot;pl-smi&quot;&gt;$country&lt;/span&gt;}}&lt;span class=&quot;pl-k&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;@&lt;/span&gt;{&lt;span class=&quot;pl-smi&quot;&gt;Name&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;license&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;; &lt;span class=&quot;pl-smi&quot;&gt;Expression&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;{&lt;span class=&quot;pl-smi&quot;&gt;$key&lt;/span&gt;}}&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L46&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;46&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC46&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L47&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;47&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC47&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt;LOGGING&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L48&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;48&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC48&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            &lt;span class=&quot;pl-smi&quot;&gt;$timing&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;get-date&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L49&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;49&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC49&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L50&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;50&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC50&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;            &lt;span class=&quot;pl-c1&quot;&gt;Write-Host&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;USUARIO: &lt;span class=&quot;pl-smi&quot;&gt;$email&lt;/span&gt; HORA: &lt;span class=&quot;pl-smi&quot;&gt;$timing&lt;/span&gt; ESTADO: &lt;span class=&quot;pl-smi&quot;&gt;$Sent&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L51&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;51&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC51&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;        }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L52&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;52&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC52&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;    }&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L53&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;53&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC53&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L54&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;54&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC54&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;} &lt;span class=&quot;pl-k&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;Export-Csv&lt;/span&gt; c:reportsReportSend24.csv &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Encoding UTF8&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L55&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;55&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC55&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-smi&quot;&gt;$end&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;get-date&lt;/span&gt; &lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-L56&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;56&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-o365-licence-report-ps1-LC56&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;Write-Host&lt;/span&gt; &lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;TERMINA: &lt;span class=&quot;pl-smi&quot;&gt;$end&lt;/span&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;    &lt;/div&gt;    &lt;div class=&quot;gist-meta&quot;&gt;      &lt;a href=&quot;https://gist.github.com/richard24se/f890797d31094d4094d866d932ff2f8f/raw/1b4aaf06674e199a8ae2268647cf2a091b7ed613/O365%20Licence%20Report.ps1&quot; style=&quot;float:right&quot;&gt;view raw&lt;/a&gt;      &lt;a href=&quot;https://gist.github.com/richard24se/f890797d31094d4094d866d932ff2f8f#file-o365-licence-report-ps1&quot;&gt;O365 Licence Report.ps1&lt;/a&gt;      hosted with &amp;#x2764; by &lt;a href=&quot;https://github.com&quot;&gt;GitHub&lt;/a&gt;    &lt;/div&gt;  &lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;#xA0;&amp;#xA0;Hasta pronto!&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Conexión remota a Powershell de Office 365</title>
        <link>https://fausto.app/notes/conexion-remota-a-powershell-de-office-365</link>
        <guid>https://fausto.app/notes/conexion-remota-a-powershell-de-office-365</guid>
        <pubDate>lun., 11 feb. 2019 15:25:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola a todos!&lt;/p&gt;
&lt;p&gt;Veremos c&amp;#xF3;mo conectarnos remotamente a la consola de Office 365.&lt;/p&gt;
&lt;div data-embed=&quot;true&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;https://github.githubassets.com/assets/gist-embed-b3b573358bfc66d89e1e95dbf8319c09.css&quot;&gt;
&lt;div id=&quot;gist94636306&quot; class=&quot;gist&quot;&gt;  &lt;div class=&quot;gist-file&quot;&gt;    &lt;div class=&quot;gist-data&quot;&gt;      &lt;div class=&quot;js-gist-file-update-container js-task-list-container file-box&quot;&gt;&lt;div id=&quot;file-connect-o365-ps1&quot; class=&quot;file&quot;&gt;  &lt;div itemprop=&quot;text&quot; class=&quot;blob-wrapper data type-powershell &quot;&gt;    &lt;table class=&quot;highlight tab-size js-file-line-container&quot; data-tab-size=&quot;8&quot;&gt;    &lt;tbody&gt;&lt;tr&gt;      &lt;td id=&quot;file-connect-o365-ps1-L1&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;1&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-connect-o365-ps1-LC1&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;pl-en&quot;&gt;Connect-O365&lt;/span&gt;(){&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-connect-o365-ps1-L2&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;2&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-connect-o365-ps1-LC2&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-connect-o365-ps1-L3&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;3&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-connect-o365-ps1-LC3&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt; &lt;span class=&quot;pl-c1&quot;&gt;Import-Module&lt;/span&gt; msonline &lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-connect-o365-ps1-L4&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;4&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-connect-o365-ps1-LC4&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt; &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt;USUARIO&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-connect-o365-ps1-L5&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;5&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-connect-o365-ps1-LC5&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt; &lt;span class=&quot;pl-smi&quot;&gt;$userL&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;USUARIO DE ADMINISTRADOR GLOBAL&lt;span class=&quot;pl-pds&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-connect-o365-ps1-L6&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;6&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-connect-o365-ps1-LC6&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt; &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt;CONTRASE&amp;#xC3;&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-connect-o365-ps1-L7&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;7&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-connect-o365-ps1-LC7&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt; &lt;span class=&quot;pl-smi&quot;&gt;$passL&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;pl-s&quot;&gt;&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;CONTRASE&amp;#xC3; DE ADMINISTRADOR GLOBAL&lt;span class=&quot;pl-pds&quot;&gt;&amp;apos;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-connect-o365-ps1-L8&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;8&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-connect-o365-ps1-LC8&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-connect-o365-ps1-L9&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;9&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-connect-o365-ps1-LC9&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt; &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt;ENCRIPTA LA CONTRASE&amp;#xC3;&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-connect-o365-ps1-L10&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;10&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-connect-o365-ps1-LC10&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt; &lt;span class=&quot;pl-smi&quot;&gt;$encrypted&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;ConvertTo-SecureString&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;$passL&lt;/span&gt; .asplaintext .force &lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-connect-o365-ps1-L11&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;11&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-connect-o365-ps1-LC11&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt; &lt;span class=&quot;pl-smi&quot;&gt;$cred&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;New-Object&lt;/span&gt; System.Management.Automation.PsCredential(&lt;span class=&quot;pl-smi&quot;&gt;$userL&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;$encrypted&lt;/span&gt;)&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-connect-o365-ps1-L12&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;12&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-connect-o365-ps1-LC12&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt; &lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt;CONEXI&amp;#xC3; AL OFFICE365&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-connect-o365-ps1-L13&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;13&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-connect-o365-ps1-LC13&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt; &lt;span class=&quot;pl-smi&quot;&gt;$Credentials&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;$cred&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-connect-o365-ps1-L14&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;14&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-connect-o365-ps1-LC14&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt; &lt;span class=&quot;pl-c1&quot;&gt;Import-Module&lt;/span&gt; msonline &lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-connect-o365-ps1-L15&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;15&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-connect-o365-ps1-LC15&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt; &lt;span class=&quot;pl-c1&quot;&gt;Connect-MsolService&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Credential &lt;span class=&quot;pl-smi&quot;&gt;$Credentials&lt;/span&gt; &lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-connect-o365-ps1-L16&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;16&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-connect-o365-ps1-LC16&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt; &lt;span class=&quot;pl-smi&quot;&gt;$Session&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;pl-c1&quot;&gt;New-PSSession&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;ConfigurationName Microsoft.Exchange &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;ConnectionUri https:&lt;span class=&quot;pl-k&quot;&gt;//&lt;/span&gt;&lt;span class=&quot;pl-c1&quot;&gt;outlook.office365.com&lt;/span&gt;&lt;span class=&quot;pl-k&quot;&gt;/&lt;/span&gt;powershell&lt;span class=&quot;pl-k&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Credential &lt;span class=&quot;pl-smi&quot;&gt;$Credentials&lt;/span&gt; &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;Authentication Basic &lt;span class=&quot;pl-k&quot;&gt;-&lt;/span&gt;AllowRedirection &lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-connect-o365-ps1-L17&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;17&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-connect-o365-ps1-LC17&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt; &lt;span class=&quot;pl-c1&quot;&gt;Import-PSSession&lt;/span&gt; &lt;span class=&quot;pl-smi&quot;&gt;$Session&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-connect-o365-ps1-L18&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;18&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-connect-o365-ps1-LC18&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt; &lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-connect-o365-ps1-L19&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;19&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-connect-o365-ps1-LC19&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;}&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-connect-o365-ps1-L20&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;20&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-connect-o365-ps1-LC20&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;Connect-O365&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-connect-o365-ps1-L21&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;21&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-connect-o365-ps1-LC21&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;&lt;span class=&quot;pl-c&quot;&gt;#&lt;/span&gt;VERIFICAR SESI&amp;#xC3;&lt;span class=&quot;pl-c&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;    &lt;tr&gt;      &lt;td id=&quot;file-connect-o365-ps1-L22&quot; class=&quot;blob-num js-line-number&quot; data-line-number=&quot;22&quot;&gt;&lt;/td&gt;      &lt;td id=&quot;file-connect-o365-ps1-LC22&quot; class=&quot;blob-code blob-code-inner js-file-line&quot;&gt;&lt;span class=&quot;pl-c1&quot;&gt;Get-PSSession&lt;/span&gt;&lt;/td&gt;    &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;    &lt;/div&gt;    &lt;div class=&quot;gist-meta&quot;&gt;      &lt;a href=&quot;https://gist.github.com/richard24se/a16d4b946a956e0e43720b1b0953f7b2/raw/9a198c9b54b108593ec7b2876a01e1a7e01795dc/Connect%20O365.ps1&quot; style=&quot;float:right&quot;&gt;view raw&lt;/a&gt;      &lt;a href=&quot;https://gist.github.com/richard24se/a16d4b946a956e0e43720b1b0953f7b2#file-connect-o365-ps1&quot;&gt;Connect O365.ps1&lt;/a&gt;      hosted with &amp;#x2764; by &lt;a href=&quot;https://github.com&quot;&gt;GitHub&lt;/a&gt;    &lt;/div&gt;  &lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Una vez ejecutado, tendremos acceso a todos los &lt;strong&gt;cmdlets&amp;#xA0;&lt;/strong&gt;de Office 365.&amp;#xA0;&lt;/p&gt;
&lt;div data-embed=&quot;true&quot;&gt;&amp;#xA0;&lt;br&gt;&lt;/div&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Powershell - Copiar grupos de un usuario a otro</title>
        <link>https://fausto.app/notes/powershell-copiar-grupos-de-un-usuario-a-otro</link>
        <guid>https://fausto.app/notes/powershell-copiar-grupos-de-un-usuario-a-otro</guid>
        <pubDate>vie., 08 feb. 2019 11:04:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola a todos!&lt;/p&gt;
&lt;p&gt;Les mostrar&amp;#xE9; un script, que se tiene que ejecutar como administrador en tu AD, para migrar todos grupos que tiene asociado un usuario a otro. &amp;#xDA;til para mover una cantidad considerable de grupos a otro, de tipo migraci&amp;#xF3;n.&lt;/p&gt;
&lt;pre&gt;$CopyFromUser = Get-ADUser $USUARIO_ORIGEN -prop MemberOf&lt;br&gt;$CopyToUser = Get-ADUser $USUARIO_DESTINO -prop MemberOf&lt;br&gt;$CopyFromUser.MemberOf | Where{$CopyToUser.MemberOf -notcontains $_} | Add-ADGroupMember -Member $CopyToUser&lt;/pre&gt;
&lt;p&gt;Hasta pronto!&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Powershell - Permisos de ejecución</title>
        <link>https://fausto.app/notes/powershell-permisos-de-ejecucion</link>
        <guid>https://fausto.app/notes/powershell-permisos-de-ejecucion</guid>
        <pubDate>mié., 06 feb. 2019 11:16:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola a todos!&lt;/p&gt;
&lt;p&gt;En caso de tener problemas para ejecutar scripts en Powershell, utilizar el siguiente comando como &lt;strong&gt;administrador&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;Set-ExecutionPolicy RemoteSigned&lt;/pre&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Icinga2 - Instalar cliente NRPE en Linux</title>
        <link>https://fausto.app/notes/icinga2-instalar-cliente-nrpe-en-linux</link>
        <guid>https://fausto.app/notes/icinga2-instalar-cliente-nrpe-en-linux</guid>
        <pubDate>mié., 06 feb. 2019 09:55:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola a todos!&lt;/p&gt;
&lt;p&gt;Para obtener los datos de sensores de un sistema operativo, en este caso Linux, necesitamos un cliente que pueda trasladar estos datos al nodo central: Icinga2.&amp;#xA0;&lt;/p&gt;
&lt;p&gt;Para esto detallaremos los pasos para instalar el cliente y dejarlo configurado en el sistema de monitoreo.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Instalar el NRPE cliente con el siguiente comando:
&lt;pre&gt;yum install nrpe -y&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Instalar los plugins (o sensores)
&lt;pre&gt;yum install nagios-plugins nagios-plugins-all nagios-plugins-nrpe -y&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Configuramos el usuario y le damos derecho sobre los sensores
&lt;pre&gt;useradd nrpe&lt;br&gt;passwd nrpe&lt;br&gt;&lt;br&gt;chown nrpe.nrpe /usr/lib64/nagios/plugins&lt;br&gt;chown -R nrpe.nrpe /usr/lib64/nagios/plugins&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Cambiamos la configuraci&amp;#xF3;n del NRPE ingresando al archivo de configuraci&amp;#xF3;n
&lt;pre&gt; vi /etc/nagios/nrpe.cfg&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Luego se agregan o editan las siguientes l&amp;#xED;neas
&lt;pre&gt;#EDITAR L&amp;#xCD;NEAS&lt;br&gt;nrpe_user=icinga2&lt;br&gt;nrpe_group=icinga2&lt;br&gt;&lt;br&gt;allowed_hosts=127.0.0.1, 172.22.44.124 #AGREGAR IP DEL SERVIDOR ICINGA2&lt;br&gt;&lt;br&gt;#AGREGAR L&amp;#xCD;NEAS - SENSORES POR DEFECTO QUE TRAE EL PLUGINS TOOL DE NAGIOS.ORG&lt;br&gt;command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10&lt;br&gt;command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20&lt;br&gt;command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 10%&lt;br&gt;command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z&lt;br&gt;command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200&lt;br&gt;command[check_procs]=/usr/local/nagios/libexec/check_procs -c 1:1 -w 1:1 -a $ARG1$&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Para terminar se ejecutan los siguientes comandos:
&lt;pre&gt;#INICIAR AUTOM&amp;#xC1;TICAMENTE&lt;br&gt;systemctl enable nrpe&lt;br&gt;&lt;br&gt;#INICIAR SERVICIO&lt;br&gt;systemctl start nrpe&lt;br&gt;&lt;br&gt;#VERIFICAR SERVICIO&lt;br&gt;systemctl status nrpe&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Eso es todo&lt;/p&gt;
&lt;p&gt;Hasta pronto!&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Skype empresarial - download user</title>
        <link>https://fausto.app/notes/skype-empresarial-download-user</link>
        <guid>https://fausto.app/notes/skype-empresarial-download-user</guid>
        <pubDate>mié., 06 feb. 2019 09:15:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola a todos!&lt;/p&gt;
&lt;p&gt;Hoy veremos un Script para convertir un usuario &lt;strong&gt;skype empresarial online&lt;/strong&gt; en &lt;strong&gt;on-premise&lt;/strong&gt;, o en otras palabras bajar un usuario de la nube.&lt;/p&gt;
&lt;p&gt;Para esto usaremos el siguiente Script:&lt;/p&gt;
&lt;pre&gt;Write-Host &amp;quot;ESCRIBE EL EMAIL&amp;quot;&lt;br&gt;$userD = Read-Host &lt;br&gt;Import-Module LyncOnlineConnector&lt;br&gt;##CREDENCIALES&lt;br&gt;#USUARIO&lt;br&gt;$userL = &amp;quot;USUARIO COMPLETO DE ADMINISTRADOR GLOBAL&amp;quot;&lt;br&gt;#CONTRASE&amp;#xD1;A&lt;br&gt;$passL=&amp;quot;CONTRASE&amp;#xD1;A DE USUARIO DE ADMINISTRADOR GLOBAL&amp;quot;&lt;br&gt;#ENCRIPTA LA CONTRASE&amp;#xD1;A&lt;br&gt;$encrypted = ConvertTo-SecureString $passL &amp;#x2013;asplaintext &amp;#x2013;force &lt;br&gt;$cred= New-Object System.Management.Automation.PsCredential($userL, $encrypted)&lt;br&gt;&lt;br&gt;#IMPORTA MODULO DE LYNC CONNECT&lt;br&gt;&lt;br&gt;#CONECTA AL LYNC&lt;br&gt;$CSSession=New-CsOnlineSession -Credential $cred&lt;br&gt;#IMPORTA MODULO DE SESI&amp;#xD3;N&lt;br&gt;Import-PSSession $CSSession -AllowClobber&lt;br&gt;Move-CsUser -Identity $userD -Target &amp;quot;NOMBRE DE SERVIDOR SKYPE ON PREMISE&amp;quot; -Credential $cred -HostedMigrationOverrideURL https://admin1a.online.lync.com/HostedMigration/hostedmigrationService.svc&lt;br&gt;Write-Host &amp;quot;USUARIO CAMBIADO: &amp;quot;+$userD&lt;br&gt;&lt;br&gt;#Remover Sessiones de todos los usuarios&lt;br&gt;Remove-PSSession *&lt;/pre&gt;
&lt;p&gt;Cambiando las variables &lt;strong&gt;$userL&lt;/strong&gt;, &lt;strong&gt;passL&lt;/strong&gt; y &lt;strong&gt;target &lt;/strong&gt;(tener en cuenta la conservaci&amp;#xF3;n de comillas, ya que son variables &lt;em&gt;String&lt;/em&gt;); se procede a ejecutar el Script en el servidor on-premise de skype que tengan. Despu&amp;#xE9;s se recomienda esperar 5 minutos y estar&amp;#xE1; bajado el usuario.&lt;/p&gt;
&lt;p&gt;Nota: en caso de no tener permisos para ejecutar scripts powershell, verificar este post.&amp;#xA0;&lt;/p&gt;
&lt;div data-embed=&quot;true&quot;&gt;&lt;aside class=&quot;embed-card&quot;&gt;&lt;article&gt;&lt;img src=&quot;https://fausto.app/uploads/2019/02/powershell3_1.png&quot;&gt;&lt;h3&gt;&lt;a href=&quot;https://fausto.app/notes/powershell-permisos-de-ejecucion&quot;&gt;Powershell - Permisos de ejecuci&amp;#xF3;n&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Hola a todos! En caso de tener problemas para ejecutar scripts en Powershell, utilizar el siguiente comando como administrador: Set-ExecutionPolicy RemoteSigned&lt;/p&gt;&lt;/article&gt;&lt;footer&gt;&lt;img src=&quot;https://fausto.app/uploads/2019/01/devop_logo_1.png?thumbnail=256&amp;amp;key=97c49f839ecff98ab1dbc46a04a1444c7f429f03474c47914788ba68c0efb771&quot;&gt;&lt;a href=&quot;https://fausto.app/notes/powershell-permisos-de-ejecucion&quot;&gt;El blog de Fausto&lt;/a&gt;&lt;/footer&gt;&lt;/aside&gt;&lt;/div&gt;
&lt;p&gt;Hasta pronto!&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Orchestrator - Iniciar RunBooks</title>
        <link>https://fausto.app/notes/orchestrator-iniciar-runbooks</link>
        <guid>https://fausto.app/notes/orchestrator-iniciar-runbooks</guid>
        <pubDate>lun., 04 feb. 2019 08:52:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola a todos!&lt;/p&gt;
&lt;p&gt;Les mostrar&amp;#xE9; un script para iniciar todos los RunBooks (que uno puede tener mapeado) por Powershell.&amp;#xA0;&lt;/p&gt;
&lt;pre&gt;#ORCH WEB SERVICE SOURCE&lt;br&gt;$ws = &amp;quot;http://pelimorch001:81/Orchestrator2012/Orchestrator.svc&amp;quot;&lt;br&gt;&lt;br&gt;#START RUNBOOK FOREACH&lt;br&gt;$runbooks = Get-Content &amp;quot;C:\Users\adminorch\Documents\POWERSHELL\AARunbook.txt&amp;quot;&lt;br&gt;&lt;br&gt;Get-Content &amp;quot;C:\Users\adminorch\Documents\POWERSHELL\AARunbook.txt&amp;quot; | Measure-Object&lt;br&gt;&lt;br&gt;ForEach ($runbook in $runbooks)&lt;br&gt;{&lt;br&gt; Write-Host $runbook&lt;br&gt; $rb=Get-SCOMonitorRunbook -webserverURL $ws | where { $_.Name -eq $runbook }&lt;br&gt; Start-SCORunbook -webserverURL $ws -RunbookGuid $rb.Id&lt;br&gt;}&lt;/pre&gt;
&lt;p&gt;Este script tiene 2 variables que deben ser modificadas acorde a lo que tienen implementado.&amp;#xA0;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;$ws&lt;/strong&gt; es la direcci&amp;#xF3;n del web services del orchestrator&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;$runbooks&lt;/strong&gt; es la direcci&amp;#xF3;n del txt, donde pondr&amp;#xE1;n los nombres de los Runbooks&lt;/p&gt;
&lt;p&gt;Una vez configurado, pueden ejecutar el Script, o dejarlo como tarea autom&amp;#xE1;tica para prevenir que sus Runbooks est&amp;#xE9;n ca&amp;#xED;dos, como tambi&amp;#xE9;n integran con una herramienta de monitoreo para el mismo fin.&lt;/p&gt;
&lt;p&gt;Adjunto el link:&amp;#xA0;&lt;a title=&quot;archivo ps1&quot; href=&quot;https://mega.nz/#!Kx4nFQyC!uTL_CUFeH4e8--o3vGPPJqBk4nKFazo-7ftRSDaTayg&quot;&gt;archivo ps1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hasta pronto!&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Office 365 - Reglas para restringir destinatarios</title>
        <link>https://fausto.app/notes/office-365-reglas-para-restringir-destinatarios</link>
        <guid>https://fausto.app/notes/office-365-reglas-para-restringir-destinatarios</guid>
        <pubDate>lun., 04 feb. 2019 07:50:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola a todos!&lt;/p&gt;
&lt;p&gt;Para restringir los destinatarios, nos iremos al &lt;strong&gt;administrador Exchange&lt;/strong&gt;, luego en iremos a la opci&amp;#xF3;n &lt;strong&gt;reglas&lt;/strong&gt; de &lt;strong&gt;flujo de correo&lt;/strong&gt;, tal como se ve en la imagen.&lt;/p&gt;
&lt;figure class=&quot;image align-center&quot;&gt;&lt;img src=&quot;https://fausto.app/uploads/2019/02/365131231231_1.PNG&quot; srcset=&quot;/uploads/2019/02/365131231231_1.PNG?width=200&amp;amp;key=362eb6fe12f2929edddb5022cf1afcdef3c09d2e262addca05ebc6dcf3a96b66 200w, /uploads/2019/02/365131231231_1.PNG?width=400&amp;amp;key=a91019d8e8e9c78c84b7e831a59193b83561250eb4f374b968d70c3e5fac202e 400w&quot;&gt;&lt;/figure&gt;
&lt;p&gt;Le hacemos click en la opci&amp;#xF3;n agregar &amp;quot;&lt;strong&gt;+&lt;/strong&gt;&amp;quot;, y nos aparecer&amp;#xE1; lo siguiente:&amp;#xA0;&lt;/p&gt;
&lt;figure class=&quot;image align-center&quot;&gt;&lt;img src=&quot;https://fausto.app/uploads/2019/02/36513123222.PNG&quot;&gt;&lt;/figure&gt;
&lt;p&gt;Sin embargo, para agilizar ya llen&amp;#xE9; uno, que pueden utilizar como template:&amp;#xA0;&lt;/p&gt;
&lt;figure class=&quot;image align-center&quot;&gt;&lt;img src=&quot;https://fausto.app/uploads/2019/02/36513121343222_1.PNG&quot;&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#xA0;Explicaremos los campos de la regla:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Nombre&lt;/strong&gt;: Nombre referencial que tendr&amp;#xE1; la regla&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Aplicar esta regla si&lt;/strong&gt;: Condicional para que se active la regla&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hacer lo siguiente&lt;/strong&gt;: En caso de que se cumpla la condicional, acci&amp;#xF3;n a tomar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Excepto si&lt;/strong&gt;: No aplica la acci&amp;#xF3;n si cumple la excepci&amp;#xF3;n.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;#xA0;De esta forma se llenan los datos para luego guardar la regla. Esperar unos 5 minutos para corroborar que funcione bien.&lt;/p&gt;
&lt;p&gt;Hasta pronto!&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Scrum - Glosario de roles</title>
        <link>https://fausto.app/notes/scrum-glosario-de-roles</link>
        <guid>https://fausto.app/notes/scrum-glosario-de-roles</guid>
        <pubDate>vie., 01 feb. 2019 09:33:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola a todos!&lt;/p&gt;
&lt;p&gt;Adjunto un glosario sobre los roles de Scrum:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Colocaci&amp;#xF3;n&lt;/strong&gt; Colocation es tener todos los miembros del equipo Scrum situados en el mismo lugar de trabajo aprovechando las ventajas de una mejor coordinaci&amp;#xF3;n, resoluci&amp;#xF3;n de problemas, intercambio de conocimientos y el aprendizaje.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cuerpo de Asesoramiento de Scrum&lt;/strong&gt; Cuerpo de Asesoramiento de Scrum (SGB) es una funci&amp;#xF3;n opcional.Por lo general, se compone de un grupo de documentos y/o un grupo de expertos que normalmente est&amp;#xE1;n envueltos en la definici&amp;#xF3;n de objetivos relacionados con la calidad, las regulaciones gubernamentales, la seguridad y otros par&amp;#xE1;metros claves de la organizaci&amp;#xF3;n.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Etapa de Formaci&amp;#xF3;n&lt;/strong&gt; Etapa de Formaci&amp;#xF3;n es la primera etapa de la formaci&amp;#xF3;n del equipo, a menudo considerado un escenario divertido porque todo es nuevo y el equipo a&amp;#xFA;n no ha encontrado alguna dificultad con el proyecto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Etapa de Normas&lt;/strong&gt; La tercera etapa de la formaci&amp;#xF3;n del equipo es cuando el equipo comienza a madurar, resolver sus diferencias internas, y encontrar soluciones para trabajar juntos. Se considera un per&amp;#xED;odo de ajuste.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Etapa de Realizaci&amp;#xF3;n&lt;/strong&gt; La etapa final de la formaci&amp;#xF3;n de equipo cuando el equipo est&amp;#xE1; m&amp;#xE1;s unido y opera a su nivel m&amp;#xE1;s alto en t&amp;#xE9;rminos de rendimiento.Los miembros se han convertido en un equipo eficiente de profesionales que son consistentemente productivos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Etapa storming&lt;/strong&gt; Etapa storming es la segunda etapa de la formaci&amp;#xF3;n del equipo, donde el equipo comienza a tratar de cumplir con el trabajo.Sin embargo, las luchas por el poder pueden ocurrir resultando en caso o confusi&amp;#xF3;n entre los miembros del equipo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;L&amp;#xED;der Servicial&lt;/strong&gt; Los L&amp;#xED;der Servicial escuchan, sienten empat&amp;#xED;a y compromiso, crean una visi&amp;#xF3;n, comparten el poder y la autoridad con los miembros del equipo. L&amp;#xED;der Servicial ayudan a que se logren buenos resultados, centr&amp;#xE1;ndose en las necesidades del equipo.Este estilo es la realizaci&amp;#xF3;n de la funci&amp;#xF3;n Scrum Master&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;N&amp;#xFA;cleo papeles&lt;/strong&gt; Funciones de n&amp;#xFA;cleo son los papeles que obligatoriamente se requieren para producir el producto del proyecto, est&amp;#xE1;n comprometidos con el proyecto, y en &amp;#xFA;ltima instancia son los responsables del &amp;#xE9;xito de cada Sprint dentro del proyecto y del proyecto en su totalidad.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Patrocinador&lt;/strong&gt; El patrocinador (patrocinador) es la persona o la organizaci&amp;#xF3;n que provee recursos y apoyo para el proyecto. El patrocinador es tambi&amp;#xE9;n el tenedor de apuestas a quien todos le rinden cuentas.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plan de Colaboraci&amp;#xF3;n&lt;/strong&gt; La colaboraci&amp;#xF3;n es un elemento muy importante en el Scrum y el Plan de colaboraci&amp;#xF3;n describe c&amp;#xF3;mo los diversos tomadores de decisiones, actores y miembros del equipo participar y colaboran con los dem&amp;#xE1;s.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Portafolio del Product Owner&lt;/strong&gt; La Cartera propietario del producto define los objetivos y las prioridades estrat&amp;#xE9;gicas para la cartera.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Portafolio del Scrum Master&lt;/strong&gt; El Cartera Scrum Master resuelve los problemas, remueve impedimentos, facilita y lleva a cabo reuniones para la cartera.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Product Owner&lt;/strong&gt; El Product Owner la persona responsable de maximizar el valor del negocio para el proyecto. &amp;#xC9;l o ella es responsable de articular los requisitos de los clientes y de mantener la justification para el proyecto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Product Owner del Programa&lt;/strong&gt; El Due&amp;#xF1;o del Producto del Programa define los objetivos estrat&amp;#xE9;gicos y las prioridades del programa.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Programa&lt;/strong&gt; Un programa es un grupo de proyectos relacionados con el objetivo de entregar resultados de negocio definidos en Declaraci&amp;#xF3;n del Programa Visi&amp;#xF3;n El Prioritized Program Backlog incorpora el atraso programa priorizado para todos los projects del programa.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rol no Esencial&lt;/strong&gt; No-Funciones de n&amp;#xFA;cleo son aquellos papeles que no son obligatoriamente necesarios para el Scrum proyecto .Pueden incluir miembros del equipo que est&amp;#xE1;n interesados en el proyecto, pero que no tienen ninguna funci&amp;#xF3;n oficial en el equipo del proyecto. Pueden interactuar con el equipo, pero tal vez no sean responsables del &amp;#xE9;xito del proyecto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scrum Master&lt;/strong&gt; El Scrum Master es uno de los papeles de Equipo Principal de Scrum. &amp;#xC9;l o ella facilita la creaci&amp;#xF3;n de entregables del proyecto, gestiona riesgos, cambios e impedimentos durante Conducta diario Standup, Mirada retrospectiva Sprint y otros procesos de Scrum.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scrum Master&lt;/strong&gt; del Programa El Scrum Master del Programa resuelve los problemas, remueve impedimentos, facilita, y lleva a cabo reuniones para el programa.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scrum Team&lt;/strong&gt; Scrum Team e s uno de los roles del Scrum Core Team roles (Scrum central Team).El Equipo Principal de Scrum trabaja en la creaci&amp;#xF3;n de los entregables del proyecto y contribuye a la realizaci&amp;#xF3;n de valor de negocio para todos los stakeholders y el producto.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stakeholder(s)&lt;/strong&gt; Stakeholder(s) es un t&amp;#xE9;rmino colectivo que incluye clientes, los usuarios y patrocinadores que frecuentemente interactuan con el Product Owner, Scrum Master y Scrum Team para proveer entradas y facilitar la creaci&amp;#xF3;n de producto del proyecto, servicio, u otros resultados.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Usuario&lt;/strong&gt; Los usuarios son los individuos o la organizaci&amp;#xF3;n que utiliza directamente el producto del proyecto, servicio u otros resultados. Al igual que clientes, para cualquier organizaci&amp;#xF3;n, pueden haber tanto usuarios internos como externos. En algunos casos, los cliente sy los usuarios pueden ser los mismos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vendedor&lt;/strong&gt; Los Vendedor incluyen a individuos u organizaciones externas que ofrecen proyectos y servicios que no est&amp;#xE1;n dentro de las competencias b&amp;#xE1;sicas de la organizaci&amp;#xF3;n del proyecto.&lt;/li&gt;
&lt;li&gt;&amp;#xA0;&lt;strong&gt;Voz del Cliente&lt;/strong&gt; Voz del Cliente (VOC)se puede denominar como los requisitos expl&amp;#xED;citos e impl&amp;#xED;citos del customer, que deben ser entendidos antes del dise&amp;#xF1;o de un producto servicio.El Producto Propietario representa la voz del client.&lt;/li&gt;
&lt;/ol&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Scrum - Glosario de información general</title>
        <link>https://fausto.app/notes/scrum-glosario-de-informacion-general</link>
        <guid>https://fausto.app/notes/scrum-glosario-de-informacion-general</guid>
        <pubDate>vie., 01 feb. 2019 09:17:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola a todos!&lt;/p&gt;
&lt;p&gt;Adjunto un glosario sobre la informaci&amp;#xF3;n general de Scrum.&amp;#xA0;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Adaptaci&amp;#xF3;n&lt;/strong&gt; Adaptaci&amp;#xF3;n sucede cuando el Equipo Principal de scrum (Scrum Team Central) y el/los stakeholder (s)aprende(n) a trav&amp;#xE9;s de la transparencia e inspection y luego se adaptan a lo aprendido para mejorar el trabajo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Auto-organizaci&amp;#xF3;n&lt;/strong&gt; Scrum cree que los empleados son auto-motivados y desean una mayor responsabilidad. Por lo tanto, los empleados ofrecen mucho m&amp;#xE1;s valor cuando se organizan por cuenta propia.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Boxeo Tiempo (time boxing)&lt;/strong&gt; Bloque de Tiempo se refiere al ajuste de periodos cortos de tiempo para el trabajo por hacer.Si el trabajo realizado est&amp;#xE1; incompleto al final del Bloque de Tiempo, se mueve al Bloque de Tiempo posterior. Bloque de Tiempo proporciona la estructura necesaria para los proyectos Scrum que tienen un elemento de incertidumbre, que son din&amp;#xE1;micos por naturaleza y son propensos a cambios frecuentes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cliente&lt;/strong&gt; El Cliente es un individuo o la organizaci&amp;#xF3;n que adquiere el producto del proyecto, servicio, o cualquier otro resultado.Para cualquier organizaci&amp;#xF3;n, dependiendo del proyecto, no puede haber dos clientes internos (es decir, dentro de la misma organizaci&amp;#xF3;n) o clientes externos (es decir, fuera de la organizaci&amp;#xF3;n).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Colaboraci&amp;#xF3;n&lt;/strong&gt; Colaboraci&amp;#xF3;n en se refiere al trabajo e interconexi&amp;#xF3;n entre el scrum core team de y los stakeholder para crear y validar los resultados del proyecto y cumplir con los objetivos planteados en el Proyecto Visi&amp;#xF3;n . Colaboraci&amp;#xF3;n se produce cuando los equipos trabajan en conjunto para aprender de los dem&amp;#xE1;s y aprovechar este conocimiento para luego producir algo m&amp;#xE1;s grande.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Control de Calidad&lt;/strong&gt; Control de Calidad se refiere a la ejecuci&amp;#xF3;n de las actividades de calidad previstas por el Scrum Team en el proceso de creaci&amp;#xF3;n de Entregables que potencialmente se pueden mandar.Tambi&amp;#xE9;n incluye el aprendizaje de cada conjunto de actividades realizado con el fin de lograr un mejora continua.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Control del Proceso Emp&amp;#xED;rico&lt;/strong&gt; El modelo Control del Proceso Emp&amp;#xED;rico ayuda a tomar decisiones basadas en la observaci&amp;#xF3;n y la experimentaci&amp;#xF3;n, m&amp;#xE1;s que en la planificaci&amp;#xF3;n inicial detallada.Se basa en las tres ideas principales de transparencia, inspecci&amp;#xF3;n y adaptaci&amp;#xF3;n.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Entrega Iterativa&lt;/strong&gt; Entrega Iterativa es la entrega gradual de valor al cliente&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inspecci&amp;#xF3;n&lt;/strong&gt; Inspecci&amp;#xF3;n se refiere a la vigilancia necesaria para seguir control de proceso emp&amp;#xED;rico, para asegurar que los productos entregables del proyecto se ajusten a los requisitos.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Justificaci&amp;#xF3;n&lt;/strong&gt; de Negocio Justificaci&amp;#xF3;n de Negocio demuestra las razones para emprender un proyecto .Responde a la pregunta &amp;quot;&amp;#xBF;Por qu&amp;#xE9; es necesario este project? Justificaci&amp;#xF3;n de Negocio impulsa todas las decisiones relacionadas con un proyecto&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prioritizaci&amp;#xF3;n&lt;/strong&gt; Prioritizaci&amp;#xF3;n se puede definir como la determinaci&amp;#xF3;n del orden de las cosas y separar lo que se har&amp;#xE1; ahora, de lo que se puede hacer m&amp;#xE1;s tarde.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ritmo Sostenible&lt;/strong&gt; Ritmo Sostenible es el ritmo en el que el equipo puede trabajar c&amp;#xF3;modamente.Esto se traduce en una mayor satisfacci&amp;#xF3;n de los empleados, la estabilidad y aumento de la precisi&amp;#xF3;n de la estimaci&amp;#xF3;n, todo lo cual en &amp;#xFA;ltima instancia conduce a una mayor satisfacci&amp;#xF3;n del cliente.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transparencia&lt;/strong&gt; La transparencia permite que todas las facetas de cualquier proceso de Scrum puedan ser observadas por cualquier persona. Compartir toda la informaci&amp;#xF3;n conduce a un entorno de alta confianza.&lt;/li&gt;
&lt;/ol&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Icinga - Eliminar comillas extras en configuración por CLI</title>
        <link>https://fausto.app/notes/icinga-eliminar-comillas-extras-en-configuracion-por-cli</link>
        <guid>https://fausto.app/notes/icinga-eliminar-comillas-extras-en-configuracion-por-cli</guid>
        <pubDate>jue., 31 ene. 2019 11:45:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola a todos!&lt;/p&gt;
&lt;p&gt;Desde la versi&amp;#xF3;n 2.5&amp;gt;, Icinga presenta con peque&amp;#xF1;o bug al momento de generar host o services por medio del CLI. El inconveniente en s&amp;#xED;, es cuando se utiliza el CLI, se agregan comillas a las variables personalizadas (&lt;strong&gt;custom_vars&lt;/strong&gt;).&lt;br&gt;&lt;br&gt;Ejemplo de comando de configuraci&amp;#xF3;n, ojo con la&amp;#xA0;&lt;strong&gt;custom_vars&lt;/strong&gt;&amp;#xA0;resaltada:&lt;/p&gt;
&lt;pre class=&quot;nb-console&quot;&gt;icinga2 repository host add name=&amp;quot;HOSTPRUEBA&amp;quot; check_command=&amp;quot;hostalive&amp;quot; address=&amp;quot;X.X.X.X&amp;quot; check_interval=1&amp;#xA0;&lt;strong&gt;vars.os=&amp;quot;Windows12&amp;quot;&lt;/strong&gt;&lt;/pre&gt;
&lt;p&gt;Luego de darle commit, aparecer&amp;#xE1; lo siguiente en el archivo de configuraci&amp;#xF3;n:&lt;/p&gt;
&lt;pre class=&quot;nb-console&quot;&gt;object Host &amp;quot;HOSTPRUEBA&amp;quot; {&lt;br&gt;address = &amp;quot;X.X.X.X&amp;quot;&lt;br&gt;check_command = &amp;quot;hostalive&amp;quot;&lt;br&gt;check_interval = 1.000000&lt;br&gt;&lt;strong&gt;&amp;quot;vars.os&amp;quot; = &amp;quot;Windows12&amp;quot;&lt;/strong&gt;&lt;br&gt;}&lt;/pre&gt;
&lt;p&gt;En el archivo de configuraci&amp;#xF3;n, vemos que la variable&amp;#xA0;&lt;strong&gt;vars.os&lt;/strong&gt;&amp;#xA0;est&amp;#xE1; con comillas, esto generar&amp;#xE1; que cuando se genere el&amp;#xA0;&lt;strong&gt;service icinga&amp;#xA0;reload&lt;/strong&gt;&amp;#xA0;no funcione y bote error, ya que va en contra en la sintaxis correcta.&lt;br&gt;&lt;br&gt;Para esto se cre&amp;#xF3; el siguiente Script en Bash:&lt;/p&gt;
&lt;pre class=&quot;nb-console&quot;&gt;hostname=&amp;quot;HOSTPRUEBA&amp;quot;&lt;br&gt;sed -i &amp;apos;s/&amp;quot;\(.*\)&amp;quot; =/\1 =/&amp;apos; /etc/icinga2/repository.d/hosts/$hostname.conf&lt;/pre&gt;
&lt;p&gt;Con este Script se borraran las comillas de todo el archivo&amp;#xA0;&lt;strong&gt;.conf&lt;/strong&gt;, no s&amp;#xF3;lo de una fila, sino todas, y a eso me refiero en caso de utilizar n&amp;#xA0;&lt;strong&gt;custom_vars.&amp;#xA0;&lt;/strong&gt;Luego de esto aplicamos la recarga del Icinga, y funcionar&amp;#xE1; perfectamente.&lt;/p&gt;
&lt;p&gt;Eso ser&amp;#xED;a todo,&lt;br&gt;Adi&amp;#xF3;s!&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>AIX - VIO - Comandos útiles</title>
        <link>https://fausto.app/notes/aix-vio-comandos-utiles</link>
        <guid>https://fausto.app/notes/aix-vio-comandos-utiles</guid>
        <pubDate>jue., 31 ene. 2019 11:26:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola,&lt;br&gt;&lt;br&gt;Se presentar&amp;#xE1; una lista de comandos &amp;#xFA;tiles para entornos AIX VIO.&lt;/p&gt;
&lt;p&gt;Modo root:&lt;/p&gt;
&lt;pre class=&quot;nb-console&quot;&gt;oem_setup_env&lt;/pre&gt;
&lt;p&gt;Ver discos:&lt;/p&gt;
&lt;pre class=&quot;nb-console&quot;&gt;lspv&lt;/pre&gt;
&lt;p&gt;Ver discos libres:&lt;/p&gt;
&lt;pre class=&quot;nb-console&quot;&gt;lspv -free&lt;/pre&gt;
&lt;p&gt;Listar adaptadores:&lt;/p&gt;
&lt;pre class=&quot;nb-console&quot;&gt;lsmap&lt;/pre&gt;
&lt;p&gt;Listar repositorios:&lt;/p&gt;
&lt;pre class=&quot;nb-console&quot;&gt;lsrep&lt;/pre&gt;
&lt;p&gt;Eso ser&amp;#xED;a todo, de todos rescato el m&amp;#xE1;s &amp;#xFA;til el&amp;#xA0;&lt;strong&gt;modo root&lt;/strong&gt;, ya que en principiantes se divaga c&amp;#xF3;mo ejecutar mejor los comandos AIX, es decir, ese modo lo permite.&lt;/p&gt;
&lt;p&gt;Eso ser&amp;#xED;a todo,&lt;br&gt;Adi&amp;#xF3;s!&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Powershell Análisis de salud de Active Directory Microsoft</title>
        <link>https://fausto.app/notes/powershell-analisis-de-salud-de-active-directory-microsoft</link>
        <guid>https://fausto.app/notes/powershell-analisis-de-salud-de-active-directory-microsoft</guid>
        <pubDate>jue., 31 ene. 2019 11:09:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola a todos!&lt;/p&gt;
&lt;p&gt;Hoy, utilizaremos Powershell para obtener informaci&amp;#xF3;n de la salud de nuestro active directory, todos los servidores involucrados en nuestro &amp;#xE1;rbol. El&amp;#xA0;&lt;a href=&quot;https://mega.nz/#!79Jw3aYK!pbj0oHqFViyIrBNMpXarkQg073EDP_XfkUayAji84lI&quot;&gt;Script&lt;/a&gt;&amp;#xA0;utiliza diferentes&amp;#xA0;&lt;strong&gt;cmdlets&lt;/strong&gt;&amp;#xA0;para obtener y analizar la informaci&amp;#xF3;n de lo mencionado. De esta forma identifica qu&amp;#xE9; errores se presentan en la plataforma. Una vez que termina de correr el Script, &amp;#xE9;ste enviar&amp;#xE1; un informe del estado del&amp;#xA0;&lt;strong&gt;Netlogon, DNS, Replication, FSMO&lt;/strong&gt;&amp;#xA0;por correo electr&amp;#xF3;nico, o en su efecto lo guardar&amp;#xE1; en la ruta directa con el nombre de archivo&amp;#xA0;&lt;strong&gt;ADReport.htm&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Procederemos a editar la variables din&amp;#xE1;micas, para esto abrimos el archivo con un editor de texto o el mismo Powershell ISE:&lt;/p&gt;
&lt;pre class=&quot;nb-console&quot;&gt;###########################Define Variables##################################&lt;br&gt;&lt;br&gt;$reportpath =&amp;#xA0;&lt;strong&gt;&amp;quot;.\ADReport.htm&amp;quot;&lt;/strong&gt;&amp;#xA0;&lt;br&gt;&lt;br&gt;if((test-path $reportpath) -like $false)&lt;br&gt;{&lt;br&gt;new-item $reportpath -type file&lt;br&gt;}&lt;br&gt;$smtphost =&amp;#xA0;&lt;strong&gt;&amp;quot;xanops.com&amp;quot;&lt;/strong&gt;&amp;#xA0;&lt;br&gt;$from =&amp;#xA0;&lt;strong&gt;&amp;quot;activedirectory@xanops.com&amp;quot;&lt;/strong&gt;&amp;#xA0;&lt;br&gt;$email1 =&amp;#xA0;&lt;strong&gt;&amp;quot;richard.santillan@xanops.com&amp;quot;&lt;/strong&gt;&lt;br&gt;$timeout =&amp;#xA0;&lt;strong&gt;&amp;quot;60&amp;quot;&lt;/strong&gt;&lt;/pre&gt;
&lt;p&gt;Seg&amp;#xFA;n lo referencia, editamos las variables en negrita con los datos a gusto.&lt;/p&gt;
&lt;p&gt;Para finalizar, este Script fue dise&amp;#xF1;ado por&amp;#xA0;Vikas Sukhija para entornos en ingl&amp;#xE9;s; por ende, le hice&lt;strong&gt;&amp;#xA0;fork&amp;#xA0;&lt;/strong&gt;para que trabaje nuestro idioma: espa&amp;#xF1;ol.&lt;br&gt;&lt;br&gt;Descargar el Script desde el siguiente enlace:&amp;#xA0;&lt;a href=&quot;https://mega.nz/#!79Jw3aYK!pbj0oHqFViyIrBNMpXarkQg073EDP_XfkUayAji84lI&quot;&gt;ADHealthCheckSpanish&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Eso ser&amp;#xED;a todo,&lt;/p&gt;
&lt;p&gt;Adi&amp;#xF3;s!&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Powershell ejecutar código de forma remota</title>
        <link>https://fausto.app/notes/powershell-ejecutar-codigo-de-forma-remota</link>
        <guid>https://fausto.app/notes/powershell-ejecutar-codigo-de-forma-remota</guid>
        <pubDate>jue., 31 ene. 2019 10:51:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola a todos!&lt;/p&gt;
&lt;p&gt;Despu&amp;#xE9;s de muchos d&amp;#xED;as, otra vez, retomamos los post con informaci&amp;#xF3;n &amp;#xFA;til. Hoy, tocaremos el tema de c&amp;#xF3;digo remoto utilizando Powershell (ojo s&amp;#xF3;lo para ambientes Microsoft!).&lt;/p&gt;
&lt;p&gt;Es muy sencillo, para esto necesitas una cuenta que tenga derecho sobre todo el parque de computadores de la organizaci&amp;#xF3;n, en pocas palabras un usuario super administrador.&lt;/p&gt;
&lt;p&gt;Utilizamos el cmdlet&amp;#xA0;&lt;strong&gt;Invoke-Command&amp;#xA0;&lt;/strong&gt;al cual le agregaremos los par&amp;#xE1;metros&amp;#xA0;&lt;strong&gt;-Computer&lt;/strong&gt;&amp;#xA0;y&amp;#xA0;&lt;strong&gt;-ScriptBlock&lt;/strong&gt;. El primero para definir el host remoto, y el segundo para determinar el c&amp;#xF3;digo que necesitemos ejecutar.&lt;/p&gt;
&lt;pre class=&quot;nb-console&quot;&gt;function SyncADAzure(){&lt;br&gt;   Invoke-Command -Computer PELIMADCONNECT -ScriptBlock {&lt;br&gt;       Import-Module ADSync;&lt;br&gt;       Start-ADSyncSyncCycle -PolicyType Delta -Verbose&lt;br&gt;   }&lt;br&gt;}&lt;/pre&gt;
&lt;p&gt;Eso ser&amp;#xED;a todo.&lt;/p&gt;
&lt;p&gt;Hasta pronto!&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>SCCM No hace inventario / Incrementar Buffer MIF de inventario de Hardware y Software</title>
        <link>https://fausto.app/notes/sccm-no-hace-inventario-incrementar-buffer-mif-de-inventario-de-hardware-y-software</link>
        <guid>https://fausto.app/notes/sccm-no-hace-inventario-incrementar-buffer-mif-de-inventario-de-hardware-y-software</guid>
        <pubDate>jue., 31 ene. 2019 10:45:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola a todos!&lt;/p&gt;
&lt;p&gt;Cuando se instala el SCCM con las configuraciones por defecto, todo funciona bien. Sin embargo, habr&amp;#xE1;n computadoras que no puedas inventariar, las cuales podr&amp;#xE1;n ser&amp;#xA0;&lt;strong&gt;1 de cada 100&lt;/strong&gt;. Para estas&amp;#xA0;&lt;strong&gt;conflictivas&lt;/strong&gt;&amp;#xA0;es necesario incrementar el buffer o MIF.&lt;/p&gt;
&lt;p&gt;&amp;#xBF;Qu&amp;#xE9; es esto?&lt;/p&gt;
&lt;p&gt;Sencillo, es la capacidad de informaci&amp;#xF3;n que puede enviar el cliente SCCM y recibir el Servidor SCCM, en pocas palabras es&amp;#xA0;&lt;strong&gt;un acuerdo entre ambos de cu&amp;#xE1;nta data se podr&amp;#xE1; manejar&lt;/strong&gt;. Por defecto son menos de 5MB.&amp;#xA0;&lt;/p&gt;
&lt;p&gt;La informaci&amp;#xF3;n de inventario de estas computadoras&amp;#xA0;&lt;strong&gt;conflictivas&lt;/strong&gt;&amp;#xA0;puede superar los 5MB. Para aumentar ese l&amp;#xED;mite haremos lo siguiente:&lt;br&gt;&lt;br&gt;Abrimos el&amp;#xA0;&lt;strong&gt;regedit&lt;/strong&gt;&amp;#xA0;y buscamos&amp;#xA0;la carpeta&lt;/p&gt;
&lt;pre class=&quot;nb-console&quot;&gt;HKLM\Software\Microsoft\SMS\Components\SMS_INVENTORY_DATA_LOADER&lt;/pre&gt;
&lt;p&gt;Luego modificamos el registro&amp;#xA0;&lt;strong&gt;Max MIF Size&lt;/strong&gt;, lo encontraremos en&amp;#xA0;&lt;strong&gt;4c4b40 (5MB)&lt;/strong&gt;, entonces lo cambiamos a&amp;#xA0;&amp;#xA0;&lt;strong&gt;3200000 (en hexadecimal)&lt;/strong&gt;&amp;#xA0;que ser&amp;#xED;an 50MB.&lt;br&gt;&lt;br&gt;Como sabemos, siempre es recomendable hacer un backup del registro que se ha de modificar.&lt;/p&gt;
&lt;p&gt;Hasta pronto!&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Extendiendo a otro dominio en SCCM</title>
        <link>https://fausto.app/notes/extendiendo-a-otro-dominio-en-sccm</link>
        <guid>https://fausto.app/notes/extendiendo-a-otro-dominio-en-sccm</guid>
        <pubDate>jue., 31 ene. 2019 08:13:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola a todos!&lt;/p&gt;
&lt;p&gt;Todo bien cuando tenemos nuestro&amp;#xA0;&lt;strong&gt;SCCM&lt;/strong&gt;&amp;#xA0;en la organizaci&amp;#xF3;n, pero &amp;#xBF;qu&amp;#xE9; sucede cuando intentamos expandir a otro dominio? Es decir agregar otro dominio al Site que ya tenemos. Pues sencillo, para entender los diferentes escenarios los invito a visitar:&amp;#xA0;&lt;a href=&quot;https://blogs.technet.microsoft.com/neilp/2012/08/20/cross-forest-support-in-configmgr-2012-part-1-simple-management/&quot;&gt;SCCM Forest Support&lt;/a&gt;. El tutorial est&amp;#xE1; muy bueno, igual me comprometo a hacer uno en espa&amp;#xF1;ol. El punto de esta publicaci&amp;#xF3;n es que a pesar de seguir las pasos, sea por el tuto o por un&amp;#xA0;&lt;strong&gt;KB de Microsoft&lt;/strong&gt;, siempre se les olvida algo. La extensi&amp;#xF3;n de&amp;#xA0;&lt;strong&gt;Esquemas de Dominio&lt;/strong&gt;. Sin eso, nuestras workstation de otro dominio no estar&amp;#xE1;n en nuestro site principal. Los invito a revisar esta peque&amp;#xF1;a gu&amp;#xED;a:&lt;/p&gt;
&lt;p&gt;Ubicaremos el exe&amp;#xA0;extadsch.exe en el servidor SCCM (donde se encuentra la instalaci&amp;#xF3;n principal) en la siguiente ruta:&amp;#xA0;Microsoft Configuration Manager\bin\X64 (usualmente)&lt;/p&gt;
&lt;p&gt;Luego, procederemos copiar ese exe en el servidor de dominio que vamos a agregar. Lo ejecutamos y se crear&amp;#xE1;n objetos en el AD:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://fausto.app/blog/content/public/upload/adgfd_0_o.png&quot; alt=&quot;undefined&quot;&gt;&lt;/p&gt;
&lt;p&gt;A ese container le agregamos permiso de escritura al administrador SCCM.&lt;/p&gt;
&lt;p&gt;Eso ser&amp;#xED;a todo,&lt;/p&gt;
&lt;p&gt;Hasta pronto!&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Estadísticas y Reporte con Postfix</title>
        <link>https://fausto.app/notes/estadisticas-y-reporte-con-postfix</link>
        <guid>https://fausto.app/notes/estadisticas-y-reporte-con-postfix</guid>
        <pubDate>jue., 31 ene. 2019 07:18:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola a todos!&lt;/p&gt;
&lt;p&gt;Despu&amp;#xE9;s de un largo descanso, venimos con una herramienta muy &amp;#xFA;til para obtener reporting del servidor de correos Postfix. Aqu&amp;#xED; hablamos de estad&amp;#xED;sticos como top, cantidad de correos enviados, resumen&amp;#xA0;de tr&amp;#xE1;fico, etc.&lt;br&gt;Para esto usaremos el lenguaje Perl a trav&amp;#xE9;s de un Script de Jimsun (autor)&lt;/p&gt;
&lt;p&gt;&lt;br&gt;Requerimientos:&lt;/p&gt;
&lt;p&gt;Instalar el m&amp;#xF3;dulo de PERL Calc Date (muy importante, sino no funciona el Script):&lt;/p&gt;
&lt;pre class=&quot;nb-console&quot;&gt;cpan install Date::Cale&lt;/pre&gt;
&lt;p&gt;Descargar (desempaquetar contenido con tar) el Script como tal:&lt;/p&gt;
&lt;pre&gt;wget&amp;#xA0;http://jimsun.linxnet.com/downloads/pflogsumm-1.1.1.tar.gz&lt;/pre&gt;
&lt;p&gt;Brindamos permisos (opcional)&lt;/p&gt;
&lt;pre class=&quot;nb-console&quot;&gt;chmod 755 /usr/local/bin/pflogsumm&lt;/pre&gt;
&lt;p&gt;Luego de todo los requerimientos, simplemente ejecutamos el Script:&lt;/p&gt;
&lt;pre class=&quot;nb-console&quot;&gt;./pflogsumm.pl /var/log/mail&lt;/pre&gt;
&lt;p&gt;Nos mostrar&amp;#xE1; algo as&amp;#xED;:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://fausto.app/blog/content/public/upload/postfix_0_o.png&quot; alt=&quot;undefined&quot;&gt;&lt;/p&gt;
&lt;p&gt;Eso ser&amp;#xED;a todo,&lt;/p&gt;
&lt;p&gt;Hasto pront!&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Extender espacio de almacenamiento de unidad LVM</title>
        <link>https://fausto.app/notes/extender-espacio-de-almacenamiento-unidad-lvm</link>
        <guid>https://fausto.app/notes/extender-espacio-de-almacenamiento-unidad-lvm</guid>
        <pubDate>mié., 30 ene. 2019 08:32:00 -0500</pubDate>
        <description><![CDATA[
          &lt;div class=&quot;post-content&quot;&gt;
&lt;p&gt;Hola a todos!&amp;#xA0;&lt;/p&gt;

&lt;p&gt;Cuando manejamos unidades con LVM y nos quedamos sin espacio de almacenamiento necesitamos extender. Esto s&amp;#xF3;lo sucede siempre que se tenga espacio en el VG. Este proceso es sencillo y lo resumimos en dos l&amp;#xED;neas de comando.&lt;/p&gt;
&lt;p&gt;Ubicamos el disco que debemos que deseamos agregar al PV:&lt;/p&gt;
&lt;pre&gt;#creamos el disco con fdisk&lt;br&gt;#fdisk /dev/sdc&lt;br&gt;#Hex code (type L to list codes): 8e&lt;br&gt;&lt;br&gt;pvcreate /dev/sdc1&lt;/pre&gt;
&lt;p&gt;Lo agregamos al VG&lt;/p&gt;
&lt;pre&gt;vgextend vgnombre /dev/sdc1&lt;/pre&gt;

&lt;p&gt;Sintaxis:&lt;/p&gt;

&lt;pre class=&quot;nb-console&quot;&gt;lvextend -L +$ALMACENAMIENTOAAGREGAR$UNIDADDEALMACENAMIENTO&amp;#xA0;/$RUTADELV&lt;/pre&gt;

&lt;p&gt;Ejemplo:&lt;/p&gt;

&lt;pre class=&quot;nb-console&quot;&gt;lvextend -L +70GB /dev/TESTCORE/carbon&lt;/pre&gt;
&lt;p&gt;Si deseas agregar todo el espacio dispoble usa el siguiente ejemplo:&lt;/p&gt;
&lt;pre&gt;lvextend -l +100%FREE/dev/TESTCORE/carbon&lt;/pre&gt;

&lt;p&gt;&amp;#xA0;Para terminar se ejecuta el siguiente comando, el cual permitir&amp;#xE1; redimensionar o en otras palabras hacer efecto el cambio (incremento de espacio!):&lt;/p&gt;

&lt;pre class=&quot;nb-console&quot;&gt;resize2fs&amp;#xA0;dev/TESTCORE/carbon&lt;/pre&gt;

&lt;p&gt;Hasta pronto!&lt;/p&gt;

&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;
        ]]></description>
      </item>
    
      <item>
        <title>Repositorio CentOS a RedHat</title>
        <link>https://fausto.app/notes/repositorio-centos-a-redhat</link>
        <guid>https://fausto.app/notes/repositorio-centos-a-redhat</guid>
        <pubDate>mar., 15 ene. 2019 19:00:00 -0500</pubDate>
        <description><![CDATA[
          &lt;p&gt;Hola a todos!&lt;/p&gt;
&lt;p&gt;Para los acostumbrados a CentOS llegar a Red Hat no se nos har&amp;#xE1; muy dif&amp;#xED;cil, por lo mismo que es una copia fiel. Sin embargo, tiene sus diferencias. Una de estas es los repositorios que manejan. Para esto agregaremos el repo a nuestro Red Hat.&lt;/p&gt;
&lt;p&gt;Buscamos el archivo y editamos:&lt;/p&gt;
&lt;pre class=&quot;nb-console&quot;&gt;vi /etc/yum.repos.d/centos.repo&lt;/pre&gt;
&lt;p&gt;Luego agregamos lo siguiente, teniendo el cuenta que $number$ es la versi&amp;#xF3;n de tu Red Hat&lt;/p&gt;
&lt;pre class=&quot;nb-console&quot;&gt;[centos]&lt;br&gt;name=CentOS $releasever - $basearch&lt;br&gt;baseurl=http://ftp.heanet.ie/pub/centos/$number$/os/$basearch/&lt;br&gt;enabled=1&lt;br&gt;gpgcheck=0&lt;/pre&gt;
&lt;p&gt;Eso ser&amp;#xED;a todo,&lt;/p&gt;
&lt;p&gt;Adi&amp;#xF3;s!&lt;/p&gt;
        ]]></description>
      </item>
    
  </channel>
</rss>
