{"id":377,"date":"2023-10-09T15:22:27","date_gmt":"2023-10-09T18:22:27","guid":{"rendered":"https:\/\/blog.4servers.co\/?p=377"},"modified":"2023-10-09T15:22:27","modified_gmt":"2023-10-09T18:22:27","slug":"usando-powershell-para-exportar-logonhours","status":"publish","type":"post","link":"https:\/\/blog.4srv.net\/index.php\/2023\/10\/09\/usando-powershell-para-exportar-logonhours\/","title":{"rendered":"Usando PowerShell para exportar LogonHours"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Oi Pessoal!!!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hoje tive a necessidade de exportar de um AD (Active Directory) uma listagem de todos os usuarios com o limite de horas de acesso (a variavel <em>LogonHours<\/em>), a\u00ed encontrei alguns scripts e tive que adapta-los para a necessidade, com isso resolvi publica-los para poder ajudar a outras pessoas assim como ele me ajudou, na realidade deu um trabalh\u00e3o gerar isso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ent\u00e3o com acabei fazendo de duas formas, um em txt e o outro em csv.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"SCRIPT1\">1. Arquivo PS1<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Usando  c\u00f3digo abaixo devemos criar um arquivo com a extens\u00e3o <strong><em>ps1<\/em><\/strong> (neste exemplo vou usar <em><strong>script.ps1<\/strong><\/em>)<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PowerShell\" data-shcb-language-slug=\"powershell\"><span><code class=\"hljs language-powershell shcb-code-table shcb-line-numbers shcb-wrap-lines\"><span class='shcb-loc'><span><span class=\"hljs-function\"><span class=\"hljs-keyword\">Function<\/span> <span class=\"hljs-title\">OctetToHours<\/span> <span class=\"hljs-params\">(<span class=\"hljs-variable\">$Octet<\/span>)<\/span><\/span>\n<\/span><\/span><span class='shcb-loc'><span>{\n<\/span><\/span><span class='shcb-loc'><span>    <span class=\"hljs-keyword\">For<\/span> (<span class=\"hljs-variable\">$j<\/span> = <span class=\"hljs-number\">0<\/span>; <span class=\"hljs-variable\">$j<\/span> <span class=\"hljs-operator\">-le<\/span> <span class=\"hljs-number\">20<\/span>; <span class=\"hljs-variable\">$j<\/span> = <span class=\"hljs-variable\">$j<\/span> + <span class=\"hljs-number\">1<\/span>)\n<\/span><\/span><span class='shcb-loc'><span>    {\n<\/span><\/span><span class='shcb-loc'><span>        <span class=\"hljs-keyword\">For<\/span> (<span class=\"hljs-variable\">$k<\/span> = <span class=\"hljs-number\">7<\/span>; <span class=\"hljs-variable\">$k<\/span> <span class=\"hljs-operator\">-ge<\/span> <span class=\"hljs-number\">0<\/span>; <span class=\"hljs-variable\">$k<\/span> = <span class=\"hljs-variable\">$k<\/span> - <span class=\"hljs-number\">1<\/span>)\n<\/span><\/span><span class='shcb-loc'><span>        {\n<\/span><\/span><span class='shcb-loc'><span>            <span class=\"hljs-variable\">$m<\/span> = <span class=\"hljs-number\">8<\/span>*<span class=\"hljs-variable\">$j<\/span> + <span class=\"hljs-variable\">$k<\/span> - <span class=\"hljs-variable\">$Bias<\/span>\n<\/span><\/span><span class='shcb-loc'><span>            <span class=\"hljs-keyword\">If<\/span> (<span class=\"hljs-variable\">$m<\/span> <span class=\"hljs-operator\">-lt<\/span> <span class=\"hljs-number\">0<\/span>) {<span class=\"hljs-variable\">$m<\/span> = <span class=\"hljs-variable\">$m<\/span> + <span class=\"hljs-number\">168<\/span>}\n<\/span><\/span><span class='shcb-loc'><span>            <span class=\"hljs-keyword\">If<\/span> (<span class=\"hljs-variable\">$Octet<\/span>&#91;<span class=\"hljs-variable\">$j<\/span>] <span class=\"hljs-operator\">-band<\/span> &#91;<span class=\"hljs-type\">Math<\/span>]::Pow(<span class=\"hljs-number\">2<\/span>, <span class=\"hljs-variable\">$k<\/span>)) {<span class=\"hljs-variable\">$LH<\/span>&#91;<span class=\"hljs-variable\">$m<\/span>] = <span class=\"hljs-string\">\"1\"<\/span>}\n<\/span><\/span><span class='shcb-loc'><span>            <span class=\"hljs-keyword\">Else<\/span> {<span class=\"hljs-variable\">$LH<\/span>&#91;<span class=\"hljs-variable\">$m<\/span>] = <span class=\"hljs-string\">\"0\"<\/span>}\n<\/span><\/span><span class='shcb-loc'><span>        }\n<\/span><\/span><span class='shcb-loc'><span>    }\n<\/span><\/span><span class='shcb-loc'><span>    <span class=\"hljs-string\">\"            --------------- Horas do dia ------------------\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>    <span class=\"hljs-string\">\"             0-3   3-6   6-9  9-12  12-15 15-18 18-21 21-0\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>    <span class=\"hljs-variable\">$arrDays<\/span> = (<span class=\"hljs-string\">\"Dom\"<\/span>, <span class=\"hljs-string\">\"Seg\"<\/span>, <span class=\"hljs-string\">\"Ter\"<\/span>, <span class=\"hljs-string\">\"Qua\"<\/span>, <span class=\"hljs-string\">\"Qui\"<\/span>, <span class=\"hljs-string\">\"Sex\"<\/span>, <span class=\"hljs-string\">\"Sab\"<\/span>)\n<\/span><\/span><span class='shcb-loc'><span>    \n<\/span><\/span><span class='shcb-loc'><span>    <span class=\"hljs-keyword\">For<\/span> (<span class=\"hljs-variable\">$j<\/span> = <span class=\"hljs-number\">0<\/span>; <span class=\"hljs-variable\">$j<\/span> <span class=\"hljs-operator\">-le<\/span> <span class=\"hljs-number\">167<\/span>; <span class=\"hljs-variable\">$j<\/span> = <span class=\"hljs-variable\">$j<\/span> + <span class=\"hljs-number\">1<\/span>)\n<\/span><\/span><span class='shcb-loc'><span>    {\n<\/span><\/span><span class='shcb-loc'><span>        <span class=\"hljs-keyword\">If<\/span> ((<span class=\"hljs-variable\">$j<\/span> % <span class=\"hljs-number\">24<\/span>) <span class=\"hljs-operator\">-eq<\/span> <span class=\"hljs-number\">0<\/span>)\n<\/span><\/span><span class='shcb-loc'><span>        {\n<\/span><\/span><span class='shcb-loc'><span>            <span class=\"hljs-variable\">$Line<\/span> = <span class=\"hljs-string\">\"    \"<\/span> + <span class=\"hljs-variable\">$arrDays<\/span>&#91;<span class=\"hljs-variable\">$j<\/span> \/ <span class=\"hljs-number\">24<\/span>] + <span class=\"hljs-string\">\"   \"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>        }\n<\/span><\/span><span class='shcb-loc'><span>        <span class=\"hljs-keyword\">If<\/span> ((<span class=\"hljs-variable\">$j<\/span> %<span class=\"hljs-number\">3<\/span>) <span class=\"hljs-operator\">-eq<\/span> <span class=\"hljs-number\">0<\/span>)\n<\/span><\/span><span class='shcb-loc'><span>        {\n<\/span><\/span><span class='shcb-loc'><span>            <span class=\"hljs-variable\">$Line<\/span> = <span class=\"hljs-variable\">$Line<\/span> + <span class=\"hljs-string\">\"   \"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>        }\n<\/span><\/span><span class='shcb-loc'><span>        <span class=\"hljs-variable\">$Line<\/span> = <span class=\"hljs-variable\">$Line<\/span> + <span class=\"hljs-variable\">$LH<\/span><span class=\"hljs-function\">&#91;<span class=\"hljs-variable\">$j<\/span>]<\/span>\n<\/span><\/span><span class='shcb-loc'><span>        <span class=\"hljs-keyword\">If<\/span> (((<span class=\"hljs-variable\">$j<\/span> + <span class=\"hljs-number\">1<\/span>) % <span class=\"hljs-number\">24<\/span>) <span class=\"hljs-operator\">-eq<\/span> <span class=\"hljs-number\">0<\/span>) {<span class=\"hljs-variable\">$Line<\/span>}\n<\/span><\/span><span class='shcb-loc'><span>    }\n<\/span><\/span><span class='shcb-loc'><span>}\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-variable\">$Domain<\/span> = <span class=\"hljs-built_in\">New-Object<\/span> System.DirectoryServices.DirectoryEntry\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-variable\">$Searcher<\/span> = <span class=\"hljs-built_in\">New-Object<\/span> System.DirectoryServices.DirectorySearcher\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-variable\">$Searcher<\/span>.SearchRoot = <span class=\"hljs-variable\">$Domain<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-variable\">$Searcher<\/span>.PageSize = <span class=\"hljs-number\">200<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-variable\">$Searcher<\/span>.Filter = <span class=\"hljs-string\">\"(&amp;(objectCategory=person)(objectClass=user))\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-variable\">$Searcher<\/span>.PropertiesToLoad.Add(<span class=\"hljs-string\">\"logonHours\"<\/span>) &gt; <span class=\"hljs-variable\">$Null<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-variable\">$Searcher<\/span>.PropertiesToLoad.Add(<span class=\"hljs-string\">\"distinguishedName\"<\/span>) &gt; <span class=\"hljs-variable\">$Null<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-variable\">$Searcher<\/span>.PropertiesToLoad.Add(<span class=\"hljs-string\">\"name\"<\/span>) &gt; <span class=\"hljs-variable\">$Null<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-variable\">$Results<\/span> = <span class=\"hljs-variable\">$Searcher<\/span>.FindAll()\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-variable\">$Bias<\/span> = &#91;<span class=\"hljs-type\">Math<\/span>]::Round((<span class=\"hljs-built_in\">Get-ItemProperty<\/span> `\n<\/span><\/span><span class='shcb-loc'><span>    <span class=\"hljs-literal\">-Path<\/span> HKLM:\\System\\CurrentControlSet\\Control\\TimeZoneInformation).Bias\/<span class=\"hljs-number\">60<\/span>, `\n<\/span><\/span><span class='shcb-loc'><span>    <span class=\"hljs-number\">0<\/span>, &#91;<span class=\"hljs-type\">MidpointRounding<\/span>]::AwayFromZero)\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-variable\">$LH<\/span> = <span class=\"hljs-built_in\">New-Object<\/span> <span class=\"hljs-string\">'object&#91;]'<\/span> <span class=\"hljs-number\">168<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-keyword\">ForEach<\/span> (<span class=\"hljs-variable\">$Result<\/span> <span class=\"hljs-keyword\">in<\/span> <span class=\"hljs-variable\">$Results<\/span>)\n<\/span><\/span><span class='shcb-loc'><span>{\n<\/span><\/span><span class='shcb-loc'><span>    <span class=\"hljs-variable\">$DN<\/span> = <span class=\"hljs-string\">\"`r`n`r`n Usuario: \"<\/span> + <span class=\"hljs-variable\">$Result<\/span>.Properties.Item(<span class=\"hljs-string\">\"name\"<\/span>)\n<\/span><\/span><span class='shcb-loc'><span>    <span class=\"hljs-variable\">$Values<\/span> = <span class=\"hljs-variable\">$Result<\/span>.Properties.Item(<span class=\"hljs-string\">\"logonHours\"<\/span>)\n<\/span><\/span><span class='shcb-loc'><span>    <span class=\"hljs-variable\">$DN<\/span>\n<\/span><\/span><span class='shcb-loc'><span>    <span class=\"hljs-variable\">$Flag<\/span> = <span class=\"hljs-variable\">$False<\/span>\n<\/span><\/span><span class='shcb-loc'><span>    <span class=\"hljs-keyword\">ForEach<\/span> (<span class=\"hljs-variable\">$Value<\/span> <span class=\"hljs-keyword\">In<\/span> <span class=\"hljs-variable\">$Values<\/span>)\n<\/span><\/span><span class='shcb-loc'><span>    {\n<\/span><\/span><span class='shcb-loc'><span>        OctetToHours <span class=\"hljs-variable\">$Value<\/span>\n<\/span><\/span><span class='shcb-loc'><span>        <span class=\"hljs-variable\">$Flag<\/span> = <span class=\"hljs-variable\">$True<\/span>\n<\/span><\/span><span class='shcb-loc'><span>    }\n<\/span><\/span><span class='shcb-loc'><span>    <span class=\"hljs-keyword\">If<\/span> (<span class=\"hljs-variable\">$Flag<\/span> <span class=\"hljs-operator\">-eq<\/span> <span class=\"hljs-variable\">$False<\/span>) {<span class=\"hljs-string\">\"    Liberado Geral\"<\/span>}\n<\/span><\/span><span class='shcb-loc'><span>}\n<\/span><\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PowerShell<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">powershell<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Depois de voce copiar o codigo acima e criar o arquivo descrito, abrimos o PowerShell (eu particularmente gosto muito de usar a interface ISE).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"439\" height=\"369\" src=\"https:\/\/blog.4servers.co\/wp-content\/uploads\/2021\/06\/1-16.png\" alt=\"\" class=\"wp-image-382\" srcset=\"https:\/\/blog.4srv.net\/wp-content\/uploads\/2021\/06\/1-16.png 439w, https:\/\/blog.4srv.net\/wp-content\/uploads\/2021\/06\/1-16-300x252.png 300w\" sizes=\"auto, (max-width: 439px) 100vw, 439px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Para poder conectar corretamente no dominio e exportar os dados que necessitamos, devemos executar o PowerShell como administrador.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"489\" height=\"377\" src=\"https:\/\/blog.4servers.co\/wp-content\/uploads\/2021\/06\/1-17.png\" alt=\"\" class=\"wp-image-383\" srcset=\"https:\/\/blog.4srv.net\/wp-content\/uploads\/2021\/06\/1-17.png 489w, https:\/\/blog.4srv.net\/wp-content\/uploads\/2021\/06\/1-17-300x231.png 300w, https:\/\/blog.4srv.net\/wp-content\/uploads\/2021\/06\/1-17-110x85.png 110w\" sizes=\"auto, (max-width: 489px) 100vw, 489px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Com o programa aberto, podemos abrir o script e verificar a sintaxe.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"591\" height=\"589\" src=\"https:\/\/blog.4servers.co\/wp-content\/uploads\/2021\/06\/1-19.png\" alt=\"\" class=\"wp-image-385\" srcset=\"https:\/\/blog.4srv.net\/wp-content\/uploads\/2021\/06\/1-19.png 591w, https:\/\/blog.4srv.net\/wp-content\/uploads\/2021\/06\/1-19-300x300.png 300w, https:\/\/blog.4srv.net\/wp-content\/uploads\/2021\/06\/1-19-150x150.png 150w\" sizes=\"auto, (max-width: 591px) 100vw, 591px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">E finalmente para executar digitamoso comando como na figura acima.<\/p>\n\n\n\n<p class=\"has-very-light-gray-background-color has-background wp-block-paragraph\"><strong>.\/script.ps1 * &gt; result.txt<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">e o resultado do comando \u00e9 escrito no arquivo texto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O retorno do programa ser\u00e1 parecido com esse:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"482\" height=\"208\" src=\"https:\/\/blog.4servers.co\/wp-content\/uploads\/2021\/06\/1-20.png\" alt=\"\" class=\"wp-image-386\" srcset=\"https:\/\/blog.4srv.net\/wp-content\/uploads\/2021\/06\/1-20.png 482w, https:\/\/blog.4srv.net\/wp-content\/uploads\/2021\/06\/1-20-300x129.png 300w\" sizes=\"auto, (max-width: 482px) 100vw, 482px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Segundo Exemplo<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">O segundo exemplo eu exportei as informa\u00e7\u00f5es para um arquivo csv que da para abrir no excel, da mesma forma que o exemplo anterior, podemos abrir na interface do PowerShell e executar diretamente nele, clicando em executar ou apretando F5<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"804\" height=\"643\" src=\"https:\/\/blog.4servers.co\/wp-content\/uploads\/2021\/06\/1-21.png\" alt=\"\" class=\"wp-image-389\" srcset=\"https:\/\/blog.4srv.net\/wp-content\/uploads\/2021\/06\/1-21.png 804w, https:\/\/blog.4srv.net\/wp-content\/uploads\/2021\/06\/1-21-300x240.png 300w, https:\/\/blog.4srv.net\/wp-content\/uploads\/2021\/06\/1-21-768x614.png 768w\" sizes=\"auto, (max-width: 804px) 100vw, 804px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Nesta exemplo o resultado desse comando sera exportado para o arquivo <strong><em>usuarios.csv<\/em><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"119\" src=\"https:\/\/blog.4servers.co\/wp-content\/uploads\/2021\/06\/1-22-1024x119.png\" alt=\"\" class=\"wp-image-390\" srcset=\"https:\/\/blog.4srv.net\/wp-content\/uploads\/2021\/06\/1-22-1024x119.png 1024w, https:\/\/blog.4srv.net\/wp-content\/uploads\/2021\/06\/1-22-300x35.png 300w, https:\/\/blog.4srv.net\/wp-content\/uploads\/2021\/06\/1-22-768x89.png 768w, https:\/\/blog.4srv.net\/wp-content\/uploads\/2021\/06\/1-22.png 1199w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Depois de pronto e antes de abrir o arquivo no Excel uma dica de ouro, \u00e9 abrir o arquivo no notepad++ ou qualquer editor de textos e adicionar a linha<\/p>\n\n\n\n<p class=\"has-very-light-gray-background-color has-background wp-block-paragraph\"><em><strong>SEP=,<\/strong><\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">antes de todo o resultado , isso far\u00e1 com que o excel ja reconhe\u00e7a as separa\u00e7\u00f5es do arquivo e j\u00e1 o abra formatado<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"SCRIPT2\">O codigo completo deste segundo exemplo est\u00e1 logo abaixo:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PowerShell\" data-shcb-language-slug=\"powershell\"><span><code class=\"hljs language-powershell shcb-code-table shcb-line-numbers shcb-wrap-lines\"><span class='shcb-loc'><span><span class=\"hljs-function\"><span class=\"hljs-keyword\">Function<\/span> <span class=\"hljs-title\">Convert-ADLogonHours<\/span><\/span> {\n<\/span><\/span><span class='shcb-loc'><span>    <span class=\"hljs-keyword\">Param<\/span>(\n<\/span><\/span><span class='shcb-loc'><span>        &#91;<span class=\"hljs-type\">Parameter<\/span>(<span class=\"hljs-type\">Mandatory<\/span>=<span class=\"hljs-variable\">$True<\/span>,<span class=\"hljs-type\">ValueFromPipeline<\/span>=<span class=\"hljs-variable\">$True<\/span>)]\n<\/span><\/span><span class='shcb-loc'><span>        &#91;<span class=\"hljs-type\">ValidateNotNullOrEmpty<\/span>()]\n<\/span><\/span><span class='shcb-loc'><span>        &#91;<span class=\"hljs-type\">Microsoft.ActiveDirectory.Management.ADUser<\/span>]<span class=\"hljs-variable\">$User<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>        &#91;<span class=\"hljs-type\">Parameter<\/span>(<span class=\"hljs-type\">Mandatory<\/span>=<span class=\"hljs-variable\">$False<\/span>)]\n<\/span><\/span><span class='shcb-loc'><span>        &#91;<span class=\"hljs-type\">Switch<\/span>]<span class=\"hljs-variable\">$NoWarnings<\/span> = <span class=\"hljs-variable\">$False<\/span>\n<\/span><\/span><span class='shcb-loc'><span>    )\n<\/span><\/span><span class='shcb-loc'><span>    <span class=\"hljs-keyword\">Process<\/span> {\n<\/span><\/span><span class='shcb-loc'><span>        <span class=\"hljs-variable\">$Properties<\/span> = <span class=\"hljs-variable\">$User<\/span> | <span class=\"hljs-built_in\">Get-Member<\/span> <span class=\"hljs-literal\">-MemberType<\/span> Property | <span class=\"hljs-built_in\">Select-Object<\/span> <span class=\"hljs-literal\">-ExpandProperty<\/span> Name\n<\/span><\/span><span class='shcb-loc'><span>        <span class=\"hljs-keyword\">If<\/span> (<span class=\"hljs-variable\">$Properties<\/span> <span class=\"hljs-operator\">-contains<\/span> <span class=\"hljs-string\">\"LogonHours\"<\/span>) {\n<\/span><\/span><span class='shcb-loc'><span>            <span class=\"hljs-keyword\">If<\/span> (<span class=\"hljs-variable\">$User<\/span>.LogonHours.Count <span class=\"hljs-operator\">-eq<\/span> <span class=\"hljs-number\">21<\/span>) {\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-variable\">$ExportArray<\/span> = <span class=\"hljs-keyword\">For<\/span> (<span class=\"hljs-variable\">$Inc<\/span> = <span class=\"hljs-number\">0<\/span>; <span class=\"hljs-variable\">$Inc<\/span> <span class=\"hljs-operator\">-lt<\/span> <span class=\"hljs-variable\">$User<\/span>.LogonHours.Count; <span class=\"hljs-variable\">$Inc<\/span> += <span class=\"hljs-number\">3<\/span>) {\n<\/span><\/span><span class='shcb-loc'><span>        \n<\/span><\/span><span class='shcb-loc'><span>                    <span class=\"hljs-variable\">$EndIndex<\/span> = <span class=\"hljs-variable\">$Inc<\/span> + <span class=\"hljs-number\">2<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span>                    <span class=\"hljs-keyword\">Switch<\/span> (<span class=\"hljs-variable\">$Inc<\/span>) {\n<\/span><\/span><span class='shcb-loc'><span>                        <span class=\"hljs-number\">0<\/span> {<span class=\"hljs-variable\">$DayOfWeek<\/span> = <span class=\"hljs-string\">\"Domingo\"<\/span>}\n<\/span><\/span><span class='shcb-loc'><span>                        <span class=\"hljs-number\">3<\/span> {<span class=\"hljs-variable\">$DayOfWeek<\/span> = <span class=\"hljs-string\">\"Segunda\"<\/span>}\n<\/span><\/span><span class='shcb-loc'><span>                        <span class=\"hljs-number\">6<\/span> {<span class=\"hljs-variable\">$DayOfWeek<\/span> = <span class=\"hljs-string\">\"Terca\"<\/span>}\n<\/span><\/span><span class='shcb-loc'><span>                        <span class=\"hljs-number\">9<\/span> {<span class=\"hljs-variable\">$DayOfWeek<\/span> = <span class=\"hljs-string\">\"Quarta\"<\/span>}\n<\/span><\/span><span class='shcb-loc'><span>                        <span class=\"hljs-number\">12<\/span> {<span class=\"hljs-variable\">$DayOfWeek<\/span> = <span class=\"hljs-string\">\"Quinta\"<\/span>}\n<\/span><\/span><span class='shcb-loc'><span>                        <span class=\"hljs-number\">15<\/span> {<span class=\"hljs-variable\">$DayOfWeek<\/span> = <span class=\"hljs-string\">\"Sexta\"<\/span>}\n<\/span><\/span><span class='shcb-loc'><span>                        <span class=\"hljs-number\">18<\/span> {<span class=\"hljs-variable\">$DayOfWeek<\/span> = <span class=\"hljs-string\">\"Sabado\"<\/span>}\n<\/span><\/span><span class='shcb-loc'><span>                    }\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span>                    <span class=\"hljs-variable\">$BinaryArray<\/span> = <span class=\"hljs-variable\">$User<\/span>.LogonHours&#91;<span class=\"hljs-variable\">$Inc<\/span><span class=\"hljs-type\">..<\/span><span class=\"hljs-variable\">$EndIndex<\/span>] | <span class=\"hljs-keyword\">ForEach<\/span> {\n<\/span><\/span><span class='shcb-loc'><span>                        <span class=\"hljs-variable\">$TempArray<\/span> = &#91;<span class=\"hljs-type\">Convert<\/span>]::ToString(<span class=\"hljs-variable\">$_<\/span>,<span class=\"hljs-number\">2<\/span>).PadLeft(<span class=\"hljs-number\">8<\/span>,<span class=\"hljs-string\">'0'<\/span>).ToCharArray()\n<\/span><\/span><span class='shcb-loc'><span>                        &#91;<span class=\"hljs-built_in\">Array<\/span>]::Reverse(<span class=\"hljs-variable\">$TempArray<\/span>)\n<\/span><\/span><span class='shcb-loc'><span>                        <span class=\"hljs-variable\">$TempArray<\/span>\n<\/span><\/span><span class='shcb-loc'><span>                    }\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span>                    <span class=\"hljs-variable\">$ExportObj<\/span> = <span class=\"hljs-built_in\">New-Object<\/span> PsObject\n<\/span><\/span><span class='shcb-loc'><span>                    <span class=\"hljs-variable\">$ExportObj<\/span> | <span class=\"hljs-built_in\">Add-Member<\/span> <span class=\"hljs-literal\">-MemberType<\/span> NoteProperty <span class=\"hljs-literal\">-Name<\/span> <span class=\"hljs-string\">\"Nome\"<\/span> <span class=\"hljs-literal\">-Value<\/span> <span class=\"hljs-variable\">$User<\/span>.Name\n<\/span><\/span><span class='shcb-loc'><span>                    <span class=\"hljs-variable\">$ExportObj<\/span> | <span class=\"hljs-built_in\">Add-Member<\/span> <span class=\"hljs-literal\">-MemberType<\/span> NoteProperty <span class=\"hljs-literal\">-Name<\/span> <span class=\"hljs-string\">\"Ultimo Login\"<\/span> <span class=\"hljs-literal\">-Value<\/span> <span class=\"hljs-variable\">$User<\/span>.LastLogonDate\n<\/span><\/span><span class='shcb-loc'><span>                    <span class=\"hljs-variable\">$ExportObj<\/span> | <span class=\"hljs-built_in\">Add-Member<\/span> <span class=\"hljs-literal\">-MemberType<\/span> NoteProperty <span class=\"hljs-literal\">-Name<\/span> <span class=\"hljs-string\">\"Dia das semana\"<\/span> <span class=\"hljs-literal\">-Value<\/span> <span class=\"hljs-variable\">$DayOfWeek<\/span>\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span>                    <span class=\"hljs-keyword\">For<\/span> (<span class=\"hljs-variable\">$Hour<\/span> = <span class=\"hljs-number\">0<\/span>; <span class=\"hljs-variable\">$Hour<\/span> <span class=\"hljs-operator\">-lt<\/span> <span class=\"hljs-number\">24<\/span>; <span class=\"hljs-variable\">$Hour<\/span>++) {\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span>                        <span class=\"hljs-keyword\">If<\/span> (<span class=\"hljs-variable\">$Hour<\/span> <span class=\"hljs-operator\">-eq<\/span> <span class=\"hljs-number\">23<\/span>) {<span class=\"hljs-variable\">$EndHour<\/span> = <span class=\"hljs-number\">0<\/span>}\n<\/span><\/span><span class='shcb-loc'><span>                        <span class=\"hljs-keyword\">Else<\/span> {<span class=\"hljs-variable\">$EndHour<\/span> = <span class=\"hljs-variable\">$Hour<\/span> + <span class=\"hljs-number\">1<\/span>}\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span>                        <span class=\"hljs-keyword\">Switch<\/span> (<span class=\"hljs-variable\">$BinaryArray<\/span>&#91;<span class=\"hljs-variable\">$Hour<\/span>]) {\n<\/span><\/span><span class='shcb-loc'><span>                            <span class=\"hljs-string\">'1'<\/span> {<span class=\"hljs-variable\">$LogonAuth<\/span> = <span class=\"hljs-string\">'Permitido'<\/span>}\n<\/span><\/span><span class='shcb-loc'><span>                            <span class=\"hljs-string\">'0'<\/span> {<span class=\"hljs-variable\">$LogonAuth<\/span> = <span class=\"hljs-string\">'Negado'<\/span>}\n<\/span><\/span><span class='shcb-loc'><span>                        }\n<\/span><\/span><span class='shcb-loc'><span>                \n<\/span><\/span><span class='shcb-loc'><span>                        <span class=\"hljs-variable\">$ExportObj<\/span> | <span class=\"hljs-built_in\">Add-Member<\/span> <span class=\"hljs-literal\">-MemberType<\/span> NoteProperty <span class=\"hljs-literal\">-Name<\/span> <span class=\"hljs-string\">\"<span class=\"hljs-variable\">$Hour<\/span>-<span class=\"hljs-variable\">$EndHour<\/span> h\"<\/span> <span class=\"hljs-literal\">-Value<\/span> <span class=\"hljs-variable\">$LogonAuth<\/span>\n<\/span><\/span><span class='shcb-loc'><span>                    }\n<\/span><\/span><span class='shcb-loc'><span>                    <span class=\"hljs-variable\">$ExportObj<\/span>\n<\/span><\/span><span class='shcb-loc'><span>                }\n<\/span><\/span><span class='shcb-loc'><span>                <span class=\"hljs-keyword\">Return<\/span> <span class=\"hljs-variable\">$ExportArray<\/span>\n<\/span><\/span><span class='shcb-loc'><span>            }\n<\/span><\/span><span class='shcb-loc'><span>            <span class=\"hljs-keyword\">ElseIf<\/span> (!<span class=\"hljs-variable\">$NoWarnings<\/span>) {<span class=\"hljs-built_in\">Write-Warning<\/span> <span class=\"hljs-literal\">-Message<\/span> <span class=\"hljs-string\">\"Hora de Logon incorreta para: <span class=\"hljs-variable\">$_<\/span>\"<\/span>}\n<\/span><\/span><span class='shcb-loc'><span>        }\n<\/span><\/span><span class='shcb-loc'><span>        <span class=\"hljs-keyword\">ElseIf<\/span> (!<span class=\"hljs-variable\">$NoWarnings<\/span>) {\n<\/span><\/span><span class='shcb-loc'><span>        \n<\/span><\/span><span class='shcb-loc'><span>        \n<\/span><\/span><span class='shcb-loc'><span>        <span class=\"hljs-built_in\">Write-Warning<\/span> <span class=\"hljs-literal\">-Message<\/span> <span class=\"hljs-string\">\"Hora nao definida para object: <span class=\"hljs-variable\">$_<\/span> \"<\/span>}\n<\/span><\/span><span class='shcb-loc'><span>    }\n<\/span><\/span><span class='shcb-loc'><span>}\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-built_in\">Get-ADUser<\/span> <span class=\"hljs-literal\">-Filter<\/span> * <span class=\"hljs-literal\">-SearchBase<\/span> <span class=\"hljs-string\">\"OU=Usuarios,DC=dominio,DC=com\"<\/span> <span class=\"hljs-literal\">-Properties<\/span> LogonHours, LastLogonDate  | <span class=\"hljs-built_in\">Convert-ADLogonHours<\/span> |<span class=\"hljs-built_in\">Export-csv<\/span> <span class=\"hljs-literal\">-path<\/span> c:\\usuarios.csv\n<\/span><\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PowerShell<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">powershell<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Espero que estas duas dicas possam ajudar&#8230; At\u00e9 a proxima!!!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Atualiza\u00e7\u00e3o<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">No primeiro exemplo tive de fazer uma altera\u00e7\u00e3o para poder capturar todos os usu\u00e1rios ativos do sistema, sendo assim como j\u00e1 existia um grupo de seguran\u00e7a com estes usu\u00e1rios foi mais f\u00e1cil, bastou criar um filtro no padr\u00e3o LDAP para esse grupo (GG_Todos) e colocar no programa e executa-lo novamente isso foi feito na <strong><a href=\"#SCRIPT1\">linha 36<\/a><\/strong> como no c\u00f3digo abaixo.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"PowerShell\" data-shcb-language-slug=\"powershell\"><span><code class=\"hljs language-powershell shcb-code-table shcb-line-numbers shcb-wrap-lines\"><span class='shcb-loc'><span><span class=\"hljs-variable\">$Searcher<\/span>.Filter = <span class=\"hljs-string\">\"(&amp;(&amp;(|(&amp;(objectCategory=person)(objectSid=&lt;em&gt;)(!samAccountType:1.2.840.113556.1.4.804:=3))(&amp;(objectCategory=person)(!objectSid=&lt;\/em&gt;))(&amp;(objectCategory=group)(groupType:1.2.840.113556.1.4.804:=14)))(objectCategory=user)(objectClass=user)(memberOf=CN=GG_Todos,OU=Grupos,OU=Rede,DC=dominio,DC=com)))\"<\/span>\n<\/span><\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PowerShell<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">powershell<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">J\u00e1 no segundo script alteramos a <a href=\"#SCRIPT2\">linha 63<\/a> para podermos aplicar o mesmo filtro.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"PowerShell\" data-shcb-language-slug=\"powershell\"><span><code class=\"hljs language-powershell shcb-code-table shcb-line-numbers shcb-wrap-lines\"><span class='shcb-loc'><span><span class=\"hljs-built_in\">Get-ADUser<\/span> <span class=\"hljs-literal\">-LDAPFilter<\/span> <span class=\"hljs-string\">\"(&amp;(&amp;(|(&amp;(objectCategory=person)(objectSid=&lt;em&gt;)(!samAccountType:1.2.840.113556.1.4.804:=3))(&amp;(objectCategory=person)(!objectSid=&lt;\/em&gt;))(&amp;(objectCategory=group)(groupType:1.2.840.113556.1.4.804:=14)))(objectCategory=user)(objectClass=user)(memberOf=CN=GG_Todos,OU=Grupos,OU=Rede,DC=heca,DC=com)))\"<\/span> <span class=\"hljs-literal\">-SearchBase<\/span> <span class=\"hljs-string\">\"OU=Usuarios,DC=dominio,DC=com\"<\/span> <span class=\"hljs-literal\">-Properties<\/span> LogonHours, LastLogonDate | <span class=\"hljs-built_in\">Convert-ADLogonHours<\/span>\n<\/span><\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PowerShell<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">powershell<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Como exportar de um AD (Active Directory) uma listagem de todos os usuarios com o limite de horas de acesso<\/p>\n","protected":false},"author":1,"featured_media":392,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23,21,18],"tags":[31],"class_list":["post-377","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-powershell","category-scripts","category-windowsserver","tag-active-directory"],"_links":{"self":[{"href":"https:\/\/blog.4srv.net\/index.php\/wp-json\/wp\/v2\/posts\/377","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.4srv.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.4srv.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.4srv.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.4srv.net\/index.php\/wp-json\/wp\/v2\/comments?post=377"}],"version-history":[{"count":28,"href":"https:\/\/blog.4srv.net\/index.php\/wp-json\/wp\/v2\/posts\/377\/revisions"}],"predecessor-version":[{"id":431,"href":"https:\/\/blog.4srv.net\/index.php\/wp-json\/wp\/v2\/posts\/377\/revisions\/431"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.4srv.net\/index.php\/wp-json\/wp\/v2\/media\/392"}],"wp:attachment":[{"href":"https:\/\/blog.4srv.net\/index.php\/wp-json\/wp\/v2\/media?parent=377"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.4srv.net\/index.php\/wp-json\/wp\/v2\/categories?post=377"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.4srv.net\/index.php\/wp-json\/wp\/v2\/tags?post=377"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}