none
Script com powershell RRS feed

  • Pergunta

  • Gostaria de um script que lê-se um arquivo txt contendo o nomes e ips dos servidores, e retornasse em um aquivo, Data, Nome do Servidor com seu ip, % de disco livre, % de memória utilizada, % de uso do processador e % de utilização da rede.

    E outro script para enviar o arquivo criado por email

    segunda-feira, 6 de outubro de 2014 16:46

Respostas

  • Tem dois problemas no seu código:

    1) Você construiu uma função mas não está chamando a função

    2) Fiz o teste chamando a função e ficou pedindo um processo, reveja a parte do get-wmiobject, acho que era apenas um "{" fora do lugar.

    Reescrevi seu código assim:

    #Monitoramento de performance dos Servidores 
    Clear-Host
    Get-Date
    #Declaracao de variaveis
    $servidor = Get-Content -Path C:\scripts\servidores.txt
    $smtphost = 10.21.1.92
    
    Foreach ($exMac in $servidor) { 
         Write-Host Computador: $exMac 
        Get-WmiObject -ComputerName $exMac Win32_LogicalDisk -filter "drivetype=3" | ForEach-Object {
            Write-Host Disco: $_.deviceid;
            Write-Host Capacidade do disco : ($_.size/1GB).ToString("0.00")GB;
            Write-Host Espaço Livre: ($_.freespace/1GB).ToString("0.00")GB;
        }
    }


    Fábio de Paula Junior

    quinta-feira, 9 de outubro de 2014 16:46
    Moderador

Todas as Respostas

  • Para ler o arquivo você pode usar o Get-Content.

    foreach($Computador in (get-content arquivo.txt)){
        #restante do código
    }

    Para conseguir nome do servidor , ip, disco livre e memória utilize gwmi.

    Escreva o código, se tiver alguma dúvida envie o código com descrição de erro ou dúvida.


    Fábio de Paula Junior

    • Sugerido como Resposta Fábio JrModerator quarta-feira, 8 de outubro de 2014 19:38
    • Não Sugerido como Resposta SmartnetINFO quinta-feira, 9 de outubro de 2014 14:43
    terça-feira, 7 de outubro de 2014 18:21
    Moderador
  • Elaborei este código:

    #Monitoramento de performance dos Servidores 
    Clear-Host
    Get-Date
    #Declaracao de variaveis
    $servidor = Get-Content -Path C:\scripts\servidores.txt
    $smtphost = 10.21.1.92
    
    function Get-DiskSpace() {
    Foreach ($exMac in $servidor) { 
    $Disco=Get-WmiObject -ComputerName $exMac Win32_LogicalDisk -filter "drivetype=3" | ForEach-Object
    {
        Write-Host Computador: $exMac 
        Write-Host Disco: $_.deviceid;
        Write-Host Capacidade do disco : ($_.size/1GB).ToString("0.00")GB;
        Write-Host Espaço Livre: ($_.freespace/1GB).ToString("0.00")GB;
        }
        }
        }


    Porém não aparece na tela o nome de cada servidor, com a capacidade do disco e o espaço livre. E também não aparece nenhum erro.



    • Editado Fábio JrModerator quinta-feira, 9 de outubro de 2014 16:41 formatacao do codigo
    quinta-feira, 9 de outubro de 2014 14:24
  • Tem dois problemas no seu código:

    1) Você construiu uma função mas não está chamando a função

    2) Fiz o teste chamando a função e ficou pedindo um processo, reveja a parte do get-wmiobject, acho que era apenas um "{" fora do lugar.

    Reescrevi seu código assim:

    #Monitoramento de performance dos Servidores 
    Clear-Host
    Get-Date
    #Declaracao de variaveis
    $servidor = Get-Content -Path C:\scripts\servidores.txt
    $smtphost = 10.21.1.92
    
    Foreach ($exMac in $servidor) { 
         Write-Host Computador: $exMac 
        Get-WmiObject -ComputerName $exMac Win32_LogicalDisk -filter "drivetype=3" | ForEach-Object {
            Write-Host Disco: $_.deviceid;
            Write-Host Capacidade do disco : ($_.size/1GB).ToString("0.00")GB;
            Write-Host Espaço Livre: ($_.freespace/1GB).ToString("0.00")GB;
        }
    }


    Fábio de Paula Junior

    quinta-feira, 9 de outubro de 2014 16:46
    Moderador