Dicas e informações sobre Windows Server, Powershell

Manutenção em diretórios temporários

Olá pessoal! Tudo certo?

Recentemente estava envolvido com a implantação de um file server, coisa simples, não?

Até que surgiu a seguinte demanda.

“Estevão, vamos criar diretórios temporários, para que colaboradores troquem arquivos entre eles. Estes diretórios deverão ser excluídos dentro de uma janela programada. Deverá criar uma pasta para cada colaborador e eles poderão inserir arquivos em todos os diretórios. Com exceção da pasta pai”.

Refleti quanto a isso por alguns minutos e a primeira coisa que me veio a cabeça foi ” Bora scriptar!”.

Então fiz as atividades abaixo:

  • Definir padrão de nomenclatura dos diretórios.
  • Garantir que os novos diretórios possuam as mesmas permissões que os antigos.
  • Menor esforço administrativo possível.
  • Garantir que usuários não façam gravação na pasta PAI, para evitar a criação de diretórios aleatórios.
  • Captar a criação de novos diretórios criados pela T.I

Segue abaixo o script comentado =D

Ficou alguma dúvida? Tem alguma sugestão?

Deixa aí nos comentários!

#Condição executa o processo do PowerShell como Administrador, caso o mesmo não seja executado com os privilégios
If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")){   
        $arguments = "& '" + $myinvocation.mycommand.definition + "'"
        Start-Process powershell -Verb runAs -ArgumentList $arguments
        Break
    }

#Criação do diretório para armazenamento de logs
$_LOGPATH = Test-Path -Path "C:\LOGPATH"
Switch($_LOGPATH){
    True{
        Write-Host "Diretório utilizado para armazenamento de LOGS Existe" -ForegroundColor Green
    }
    False{
        Write-Host "Diretório para armazenamento de logs não existe. O mesmo será criado" -ForegroundColor Red
        New-Item -ItemType Directory -Path c: -Name LOGPATH
    }


}

#Arquivo que irá conter o nome dos diretórios existentes na pasta pai
$_LOGFILE = "C:\LOGPATH\log.txt"

#Variável usada para armazenar o status do arquivo de Log no diretório
$_FILE = Test-Path -Path $_LOGFILE

#Condição valida se o arquivo de log existe, caso seja verdadeiro. O comando rm deleta todos os arquivos TXT do diretório
#Configurei o script para realizar essa limpeza, para que sempre que um novo diretório seja criado, ele não se perca.

if ($_FILE -eq "True"){
    Write-Host "Diretório Existe. Arquivos TXT serão excluidos do mesmo"
    rm $_LOGFILE
    }Else{
    Write-Host "Arquivo não existe"
    }

#Diretório raiz
[string]$_PATH = "PASTA PAI"

#Lista todos os diretórios existentes na pasta pai e armazena os nomes no arquivo de log
$_LIST = ls -l $_PATH
$_LIST.Name >> $_LOGFILE

#As permissões do diretório são explicitas, então vamos armazená-las na variável $_ACL para que sejam aplicadas as mesmas nas novas pastas
$_ACL = Get-Acl "Diretório"

#O CMDLET Get-Content realiza a leitura do arquivo de log e exclui todos os diretórios conforme a ordem do arquivo
Foreach($_USERDIR in Get-Content $_LOGFILE)
    {
        Write-Host "Diretório" $_USERDIR "Será removido" -ForegroundColor Cyan
       Remove-Item -Path $_PATH\$_USERDIR
        Write-Host "Diretório" $_USERDIR "Removido" -ForegroundColor Cyan
    }

#Recria os diretório e aplica as permissões que foram armazenadas em $_ACL
Foreach($_USERDIR in Get-Content $_LOGFILE)
    {
        Write-Host "Diretório" $_USERDIR "Será criado" -ForegroundColor Cyan
        New-Item -Path $_PATH\$_USERDIR -ItemType "Directory" -Force
        Write-Host "Diretório " $_USERDIR " Foi criado!" -ForegroundColor Green
        Write-Host "Permissões serão aplicadas no diretório novamente" -ForegroundColor Cyan
        Set-Acl -Path $_PATH\$_USERDIR -AclObject $_ACL
        Write-Host "Permissão aplicada em" $_USERDIR "com sucesso!" -ForegroundColor Green
        
    }

7 Comments

  1. If you are going for finest contents like me, simply pay a visit
    this web site everyday because it presents feature contents,
    thanks

  2. August 11, 2019    

    Hi. I have checked your estevaofranca.com and i see you’ve got some
    duplicate content so probably it is the reason that you don’t rank
    high in google. But you can fix this issue fast. There
    is a tool that generates content like human, just search
    in google: miftolo’s tools

  3. September 8, 2019    

    I always was concerned in this subject and still am, appreciate it for putting up.

  4. November 12, 2019    

    Hello! This is my first visit to your blog!
    We are a group of volunteers and starting a new initiative in a community in the same niche.
    Your blog provided us useful information to work on. You have done a marvellous job!

  5. November 16, 2019    

    Useful information. Fortunate me I discovered your site accidentally,
    and I’m stunned why this accident didn’t happened in advance!
    I bookmarked it.

  6. November 22, 2019    

    Have you ever thought about including a little bit more than just your articles?
    I mean, what you say is fundamental and everything. Nevertheless think of if you added some great graphics or video clips to give your posts more, “pop”!
    Your content is excellent but with pics and clips, this
    site could certainly be one of the best in its field. Excellent
    blog!

    • December 12, 2019    

      Hi!
      Thanks for your feedback!
      I’m really thinking in give more things for the community.
      i’ve good news for 2020! But it’s surprise!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.