BlackTDN Search

segunda-feira, 28 de abril de 2014

BlackTDN :: PowerShell TotvsRestart.ps1

#Script Name TotvsRestart.ps1

#Force Stop/Start
(get-service|where{$_.status -eq "running" -and $_.Name.ToLower().Contains("totvs")}|%{(Stop-Service -force -name $_.Name);Start-Service -Name $_.Name})

#Force Start
(get-service|where{$_.status -ne "running" -and $_.Name.ToLower().Contains("totvs")}|%{(Stop-Service  - force -name $_.Name);Start-Service -Name $_.Name})

3 comentários:

  1. Naldo parabéns pelo blog, queria te mandar um e-mail não encontrei em nenhum lugar.
    Quero tirar uma dúvida que não tem a ver com esse post, é a seguinte:
    Qual a diferença em usar a função ASCAN do advpl ou procurar o que eu quero utilizando laço FOR?
    Essa função tem alguma mágica, é mais rápida?

    ResponderExcluir
    Respostas
    1. Jackson,

      Nas aulas que ministro costumo mostrar, usando AdvPL, uma simulação do funcionamento das funções aEval e aSort... Vou montar um exemplo da aScan e publicar.

      Mas uma afirmativa é certa: Utilize aScan, vai rodar em C++, no server, muito mais rápida do que um laço For/Next.

      Como exemplo:


      #include "rwmake.ch"
      #include "protheus.ch"
      #xtranslate MsgOut([]) => (ConOut([]),MsgBox([]))
      //-----------------------------------------------------------------------------
      //BlackTDN :: Simulando aSort e aEval
      //-----------------------------------------------------------------------------
      User Function aOrdena()

      Local aArray := {10,9,7,4,3,2,5,6,78,89,0,43,2,4,65}
      Local aCopy := aClone(aArray)
      Local cMsg := ""
      Local cCRLF := CRLF

      //-----------------------------------------------------------------------------
      //Usando a funcao padrao
      //-----------------------------------------------------------------------------

      //-----------------------------------------------------------------------------
      //Função aEval() : http://tdn.totvs.com/display/tec/AEVal
      //-----------------------------------------------------------------------------
      aEval(aArray,{|nValor|cMsg+=Str(nValor)+cCRLF})
      MsgOut(cMsg,OemToAnsi("Eval|aSort Padrão: Resultado Não Ordenado"),"INFO")
      cMsg := ""

      //-----------------------------------------------------------------------------
      //Função aSort() : http://tdn.totvs.com/pages/viewpage.action?pageId=23889126
      //-----------------------------------------------------------------------------
      aSort(aArray,NIL,NIL,{|nMenor,nMaior|nMenornMaior})
      aEval(aArray,{|nValor|cMsg+=Str(nValor)+cCRLF})
      MsgOut(cMsg,OemToAnsi("Eval|aSort Padrão: Resultado Ordem Decrescente"),"INFO")
      cMsg := ""

      //-----------------------------------------------------------------------------
      //Usando a funcao customizada
      //-----------------------------------------------------------------------------

      aSize(aArray,0)
      __aEval(aCopy,{|e|aAdd(aArray,e)})

      __aEval(aArray,{|nValor|cMsg+=Str(nValor)+cCRLF})
      MsgOut(cMsg,OemToAnsi("Eval|aSort Padrão: Resultado Não Ordenado"),"INFO")
      cMsg := ""

      __aSort(aArray,NIL,NIL,{|nMenor,nMaior|nMenornMaior})
      __aEval(aArray,{|nValor|cMsg+=Str(nValor)+cCRLF})
      MsgOut(cMsg,OemToAnsi("__aEval|__aSort Customizadas : Resultado Ordem Decrescente"),"INFO")
      cMsg := ""

      Return(NIL)

      //-----------------------------------------------------------------------------
      //Simulando aSort padrao
      //-----------------------------------------------------------------------------
      Static Function __aSort(aArray,nStart,nCount,bEval)

      Local nD
      Local nJ

      Local uTmp

      DEFAULT nStart := 1
      DEFAULT nCount := Len( aArray )

      For nD := nStart To nCount
      For nJ := nD To nCount
      IF Eval(bEval,aArray[nJ],aArray[nD])
      uTmp := aArray[nD]
      aArray[nD] := aArray[nJ]
      aArray[nJ] := uTmp
      EndIF
      Next nJ
      Next nI

      Return(aArray)

      //-----------------------------------------------------------------------------
      //Simulando aEval padrao
      //-----------------------------------------------------------------------------
      Static Function __aEval(aArray,bEval,nStart,nCount)

      Local nD
      Local nJ

      DEFAULT nStart := 1
      DEFAULT nCount := Len(aArray)

      nJ := nCount
      For nD := nStart To nJ
      //Função Eval() :: http://tdn.totvs.com.br/pages/viewpage.action?pageId=24346635
      Eval(bEval,aArray[nD],nD)
      Next nD

      Return(aArray)

      Excluir
  2. Beleza Naldo obrigado!
    Você poderia montar um post com dicas sobre essas funções que são mais rápidas hein.. hehe
    Valeu abs!

    ResponderExcluir