none
Como faço isto em PowerShell??? Lista RRS feed

  • Pergunta

  • Prezados,

    Estou com uma dúvida cabeluda. Quero fazer isto no powershell e não estou encontrando o termo correto para a situação e nem exemplos práticos de como fazer.

    Eu recebo o resultado de uma query desta forma.

    uuid ( RO)             : 867dfd15-4a80-3607-9d41-8fe7c10371d3
           name-label ( RW): router
        is-a-snapshot ( RO): false

    Aí eu preciso gerar um código para deixar apenas a informação após os ":". Então escrevi esta função abaixo.

    function stripVal($strVal) {
     $arrStrip = $strVal.split(":")
      $stripVal = $arrStrip[1].Trim()
      write-output $stripVal
    }

    Agora preciso verificar esta lista , tratar cada linha pegando a string que está depois de ":" (aqui está ok), e gerar um loop para devolver cada linha para uma determinada variável. Então escrevi este código abaixo.

      foreach ($b in $objExec) {
        $strStatus = "Found"
        $strUUID = $(stripVal $b) + "`n"
        $strVM = $(stripVal $b) + "`n"
        $strSnapShot = $(stripVal $b) + "`n"
      }

    Eu quero tentar converter esta parte de um script, mas não consegui encontrar nada que substitua a forma como foi feito em VBScript.

     Do While Not objExec.StdOut.AtEndOfStream
     strStatus = "Found"
     strUUID = stripValue(objExec.StdOut.ReadLine())
     strVM = stripValue(objExec.StdOut.ReadLine())
     strSnapShot = stripValue(objExec.StdOut.ReadLine())
     strTemp = objExec.StdOut.ReadLine()
     strTemp = objExec.StdOut.ReadLine()
     
     If strSnapShot = "false" and strVM <> "Control domain on host" Then
      strStatus = "Good"
     End If
     Loop

    Alguém pode me ajudar???

     


    Artur de Souza Aragão - Consultor de TI e Segurança
    quarta-feira, 26 de maio de 2010 05:19

Respostas

  • Artur,

    Entes valores podem ser colocados dentro de uma Hash table, assim (fiz lendo um arquivo texto porque não tenho XenServer para testar).

    .PS1

    $Dados = "E:\PROFILES\Desktop\XenServer.txt"
    
    $Lista=Get-Content $Dados
    
    $HashXen = @{}
    
    foreach($Linha in $Lista){
        
        #Separa atributo e valor
        $arrStrip = $Linha.split(":")
        $stripVal = $arrStrip[1].Trim()
    
        #Pega nome do atributo (uuid, name-label ou is-a-snapshot)
        $Atributo = ($arrStrip[0].Trim()).split(" ")[0]
    
    
        $HashXen+=@{$Atributo=$stripVal}
    
    
    }
    
    
    if ( $HashXen["is-a-snapshot"] -eq "false" -and  $HashXen["name-label"] -ne "Control domain on host"){
      $Status = "Good"
    }
    
    $Status

    A hash table teria os seguintes valores

    PS C:\Users\fabiojr> $HashXen
    
    Name                           Value                                                                                                                                                 
    ----                           -----                                                                                                                                                 
    uuid                           867dfd15-4a80-3607-9d41-8fe7c10371d3                                                                                                                  
    is-a-snapshot                  false                                                                                                                                                 
    name-label                     router                               

    ------------------------

    Mutirão de Respostas

    ------------------------


    Fábio de Paula Junior

    segunda-feira, 19 de novembro de 2012 15:03
    Moderador