none
Script Powershell RRS feed

  • Pergunta

  • Pessoal,

    Tenho um script em powershell que atraves do powershell ise funciona perfeitamente, porém quando inicio diretamente do powershell e/ou bat; vbs não funciona, gera arquivo porém com apenas 1kb.

    Poderiam me ajudar.

    Script Powershell

    $DestZip='C:\teste\' $Dest = "C:\teste\bkp\teste.dbx" $ZipTimestamp = Get-Date -format yyyy-MM-dd; $ZipFileName = $DestZip + "FILE_" + $ZipTimestamp + ".zip" set-content $ZipFileName ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18)) # Wait for the zip file to be created. while (!(Test-Path -PathType leaf -Path $ZipFileName)) { $zipCount = $zipPackage.Items().count echo "Waiting for compression to complete ..." Start-sleep -Seconds 1 $zipPackage.CopyHere($file) #--Add some delay to wait -# do { $zipCount = $zipPackage.Items().count echo "Waiting for compression to complete ..." Start-sleep -Seconds 1 } while ($zippackage.Items().count -lt 1) echo "Finished zipping successfully" } $ZipFile = (new-object -com shell.application).NameSpace($ZipFileName) Write-Output (">> Waiting Compression : " + $ZipFileName) $ZipFile.CopyHere($Dest)

    *************************

    Script VB

    Dim objShell
    Set objShell = CreateObject("WScript.Shell")
    strCMD = "powershell -sta -noProfile -NonInteractive  -nologo -command " & Chr(34) & "c:\bkp.ps1" & Chr(34) 
    objShell.Run strCMD,0




    Your potencial. Our passion.

    sábado, 13 de fevereiro de 2016 00:51

Respostas

  • Ola Kelsen,

    Isso ocorre porque quando você executa o script, a instância do PowerShell é encerrado, com isso o "bkp.ps1" também, isso ira ocorre também se clicar com o botão direito no Script e manda executar com o powershell, a única razão de funcionar no ISE ou no Prompt do PowerShell é que a instância não é encerrada.

    Nesse caso se você adicionar  "-Noexit" na linha de comando irá funcionar, entretanto, irá ficar uma  instancia aberta em background, se o scritp for executado mais de uma vez, vários processos do powershell irá ficar parado, ate reiniciar a maquina ou matar os processos.

    Uma alternativa é acrescentar "Start-sleep -Seconds" com o tempo aproximado que você ache que ira efetuar a compactação depois do "$ZipFile.CopyHere($Dest) ", sendo assim o script fica pausado.


    opção 1:

    powershell -sta -noProfile -NonInteractive -Noexit -nologo -command " & Chr(34) & "c:\bkp.ps1" & Chr(34


    Opção 2

    $ZipFile = (new-object -com shell.application).NameSpace($ZipFileName)
    Write-Output (">> Waiting Compression : " + $ZipFileName)       
    $ZipFile.CopyHere($Dest) 
    Start-sleep -Seconds 60
     Write-Output (">> Fimn : " + $ZipFileName)    FileName)    




    att, Aparecido Deveza

    • Sugerido como Resposta Otto Gori quarta-feira, 10 de agosto de 2016 16:48
    • Marcado como Resposta Kelsen Lima segunda-feira, 22 de agosto de 2016 19:55
    sábado, 13 de fevereiro de 2016 15:14