Posts Tagged ‘automatizacao’

Pegar parte da string no prompt de comando do Windows

abril 6th, 2018

O exemplo é para pegar somente o nome da pool de aplicativo do retorno do seguinte comando

C:\>appcmd list apppools /state:started /xml | findstr "APPPOOL.NAME"
    <APPPOOL APPPOOL.NAME="site1" PipelineMode="Integrated" RuntimeVersion="" state="Started" />
    <APPPOOL APPPOOL.NAME="site1" PipelineMode="Integrated" RuntimeVersion="" state="Started" />
    <APPPOOL APPPOOL.NAME="site1" PipelineMode="Integrated" RuntimeVersion="v4.0" state="Started" />

Para pegarmos somente o nome, podemos usar o seguinte

C:\>FOR /F delims^=^"^ tokens^=2 %i IN ('appcmd list apppools /state:started /xml ^| findstr "APPPOOL.NAME"') DO @ECHO %i
site1
site2
site3

onde delims é o delimitador que será quebrada a string e tokens é o número da coluna onde está a string que você quer, no nosso caso é a segunda coluna, conforme o primeiro comando deste exemplo, no final nós damos um DO para fazer alguma coisa com a saída do comando, no nosso caso nós só mostramos no prompt, mas poderiamos executar algum comando com base nessa saída, por exemplo.

Apagar arquivos antigos e diretórios vazios com powershell

setembro 5th, 2017

Apagar arquivos com mais de 31 dias
Substitua %diretorio% pelo diretório que deseja apagar o conteúdo antigo

Get-ChildItem %diretorio% -recurse | Where {!$_.PSIsContainer -and $_.LastWriteTime -lt (get-date).AddDays(-31)} | Remove-Item -whatif

Apagar diretórios vazios
Substitua %diretorio% pelo diretório que deseja apagar os diretórios vazios

Get-ChildItem %diretorio% -recurse | Where {$_.PSIsContainer -and @(Get-ChildItem -Lit $_.Fullname -r | Where {!$_.PSIsContainer}).Length -eq 0} |Remove-Item -recurse -whatif

Lembrando que o parâmetro -whatif no final simula o que aconteceria se o comando fosse realmente executado. Para ele ser realmente executado, remova o -whatif do final

Referência: https://stackoverflow.com/questions/1575493/how-to-delete-empty-subfolders-with-powershell

Instalar recursos do Windows 2012 automaticamente

janeiro 5th, 2017

Meu cenário era o seguinte: eu tinha um servidor web com todas as features instaladas, tudo pronto, mas precisava criar um servidor com os mesmos recursos em outro lugar, o que fiz para agilizar o processo e para depois automatizar foi o seguinte. Peguei um servidor que eu já tinha pronto e exportei a lista das features já instaladas, fiz isso com o seguinte comando no powershell.

Get-WindowsFeature | ? { $_.Installed } | Select Name | ForEach-Object { $_.Name } | Out-File .\Features.txt

Traduzindo a linha: pega o nome de todas os recursos da máquina que estejam instalados e joga cada nome em uma linha dentro do arquivo Features.txt

Com esse .txt, copiei para o servidor recém instalado, abri o powershell e executei o seguinte comando

$(Get-Content .\Features.txt) | Add-WindowsFeature

Daí é só esperar ser tudo instalado :D, me poupou bastante tempo esse processo.
Ah, uma coisa, a máquina deve ter conexão com a internet para concluir a instalação com sucesso.

Link base: Importing and Exporting Windows Features with PowerShell

Mudar trust level com o appcmd para todas as versões do asp.net

junho 28th, 2016

Aprendi que para mudar o trustLevel de somente um site cadastrado no IIS 8 eu poderia usar o comando abaixo

appcmd set config "site.com.br" -section:system.web/trust /level:"Full" /commit:webroot

Ele faz commit no web.config do framework, e a configuração só vale para site.com.br. A configuração fica tipo isso

<location path="site.com.br">
   <system.web>
       <trust level="Full" />
   </system.web>
</location>

O problema que eu tive foi que o comando alterava o trust level somente para a versão 4 do asp.net, mesmo se o site estivesse utilizando a versão 2.0, era a versão 4 que era alterada. Pesquisando descobri que dá pra informar a versão no final do comando, assim é possível configurar tanto para a versão 2 quanto para a versão 4. O exemplo abaixo configura o trust level para full na versão 2.0 do asp.net.

appcmd set config "site.com.br" -section:system.web/trust /level:"Full" /commit:webroot /clr:2

O site que me ajudou com isso foi esse:
http://weblogs.asp.net/owscott/targeting-the-net-framework-version-and-bitness-in-appcmd