none
problema (.cmd) para rodar um script .ps1 RRS feed

  • Pergunta

  • bom dia amigos fiz um script com extensão .ps1 assim: Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin
    export-mailbox -identity "andre" -PSTFolderPath c:\PSTFiles\andre.pst -confirm:$false, está rodando perfeito. Quando criei o seguinte cmd : powershell -command "& 'Exportar_pst.ps1'" lembrando que coloquei o arquivo.ps1 no caminho c:\windows\system32\windowspowershell\v1.0

    dá o seguinte erro : The term 'Exportar_pst.ps1' is not recognized as a cmdlet, function, operable p
    rogram, or script file. Verify the term and try again.
    At line:1 char:2
    + &  <<<< 'Exportar_pst.ps1'

     

    peguei este comando neste link : http://carlosem.wordpress.com/2010/01/05/como-agendar-scripts-do-exchange-management-shell/

    quinta-feira, 16 de dezembro de 2010 12:26

Respostas

  • Wagner,

     

    O caminho do arquivo tem que estar completo para que o cmd o reconheça, ao por no caminho do powershell não significa que o cmd irá buscá-lo automaticamenhte, tenho por o caminho completo.

     

    Vinnie Cavalheiro

    vinniecavalheiro.wordpress.com


    Vinnie Cavalheiro
    quinta-feira, 16 de dezembro de 2010 17:17
  • Wagner,

    Powershell é seguro por padrão :D.

     

    Use assim(dentro do Shell do Powershell) Menu Iniciar/powershell

     

    PS C:\My Scripts>.\Exportar_pst.ps1


    Abraço,

     

    Demétrio Silva


    Demétrio Silva MCP | MCTS | MCITP | MCT SQL SERVER
    terça-feira, 25 de janeiro de 2011 18:52

Todas as Respostas

  • Wagner,

     

    O caminho do arquivo tem que estar completo para que o cmd o reconheça, ao por no caminho do powershell não significa que o cmd irá buscá-lo automaticamenhte, tenho por o caminho completo.

     

    Vinnie Cavalheiro

    vinniecavalheiro.wordpress.com


    Vinnie Cavalheiro
    quinta-feira, 16 de dezembro de 2010 17:17
  • oi amigo, obrigado pela resposta, mas já coloquei tambem com o caminho completo apontando para o script.ps1 e deu o mesmo erro.

    C:\cmd>powershell.exe -command "& 'C:\My Scripts\Exportar_pst.ps1' "
    O termo 'C:\My Scripts\Exportar_pst.ps1' não é reconhecido como cmdlet, função,
     programa operável ou arquivo de script. Verifique o termo e tente novamente.
    Em linha:1 caractere:2
    + &  <<<< 'C:\My Scripts\Exportar_pst.ps1'

    sexta-feira, 17 de dezembro de 2010 11:31
  • Wagner,

    Powershell é seguro por padrão :D.

     

    Use assim(dentro do Shell do Powershell) Menu Iniciar/powershell

     

    PS C:\My Scripts>.\Exportar_pst.ps1


    Abraço,

     

    Demétrio Silva


    Demétrio Silva MCP | MCTS | MCITP | MCT SQL SERVER
    terça-feira, 25 de janeiro de 2011 18:52
  • Wagner,

    Powershell é seguro por padrão :D.

     

    Use assim(dentro do Shell do Powershell) Menu Iniciar/powershell

     

    PS C:\My Scripts>.\Exportar_pst.ps1


    Abraço,

     

    Demétrio Silva


    Demétrio Silva MCP | MCTS | MCITP | MCT SQL SERVER

    Prezados(as), tudo bem com vocês?

    Solicito um auxilio criei uma função que faz backup de maquinas virtuais essa função recebe dois parâmetros o nome do servidor e o nome da VM. Preciso chamar função chamando o arquivo .ps1, já tentei executar o arquivo e passar os parâmetros para função de diversas formas, mas o comando é executado e nenhuma ação é realizada, mas quando executo a função no Powershell ISE tudo funciona as mil maravilhas, veja abaixo: 

    > powershell.exe –command "& { C:\script_backup\Exportar-Vm.ps1 'SERVIDO' 'NOMEDAVM' }"

    > powershell.exe –NonInteractive –ExecutionPolicy Unrestricted –command "& {C:\script_backup\Exportar-Vm.ps1 SERVIDOR NOMEDAVM}"

    > powershell ""& C:\script_backup\Exportar-vm SERVIDOR NOMEDAVM""

    > powershell -Command "& C:\script_backup\Exportar-vm -serverName SERVIDOR -vmName NOMEDAVM"

    >powershell.exe -command .\Exportar-VM.ps1

    e outras formas não listadas, todos os comando acima são executado (devolve o prompt mas não executam a função que esta no arquivo, não lança um erro na tela e nem gera um log de informação de erro de nada, já não sei mais o que fazer.

    Segue abaixo o script que esta no arquivo .ps1 que estou tentando executar

    function Exportar-Vm
    {
        [CmdletBinding()]
    
        param(
             [string]$serverName,
             [string]$vmName
        )
        
        process{
            # Vars
            $backupPath = "D:\BACKUPs"
            $fileset = "include"
            $typeParameter = "VirtualMachine"
            $pathScriptBackup = "C:\scripts_backup"
            $FileMessage = "exportarvm.dll"
            $logName = "Evento de backup - Bacula-FD"
            $logSource = "Bacula-BackupVm"
    
            $getVm = Get-Vm -ComputerName $serverName -Name $vmName
            if(($getVm.GetType().Name  -eq $typeParameter) -and ($getVm.Name -eq $vmName)){
                    # verify if exist file in directory BACKUPs and remove. The objective this command line is remove file "include". Just file in the directory
                    Get-ChildItem -Path $backupPath"*" -File | Remove-Item
                    $Date = Get-Date -UFormat "%d-%b-%Y-%H-%M-%S"
                    #create directory
                    $dir = New-Item -Name "$vmName-$date" -ItemType "directory" -Path $backupPath -Force
                    # out file path in file include
                    $dir.FullName | Out-File "$backupPath\$fileset"
                    # Export vm
                    Export-VM -Name $vmName -Path $dir -AsJob
                    Write-EventLog -LogName $logName -Source $logSource -EntryType Information -EventId 1 -Message " $vmName exportada com sucesso! Para $dir"
            }else{
                Write-EventLog -LogName $logName -Source $logSource -EntryType Error -EventId 3 -Message " Erro maquina virtual não exportada - Backup não realizado"
            }
            Write-EventLog -LogName $logName -Source $logSource -EntryType Information -EventId 2 -Message "Fim da execução script de backup."
        }
    }



    terça-feira, 3 de abril de 2018 14:23
  • Olá bom dia!

    Por tentativa e erro acabei criando um script auxiliar que funcionou. 

    $logSource = "BackupVm"
    $logName = "Evento de backup"
    $jobid = Get-Random
    $jobName = "VM-$jobid"
    
    #Remove os jobs completados
    Remove-Job -Name "VM*"
    $job = Start-Job -Name "$jobName" -ScriptBlock {
        cd "C:\scripts_backup"
        . .\Exportar-Vm.ps1
        Exportar-Vm -serverName "SERVIDOR-HOST" -vmName "VM"
    }
    
    do {
        if($job.State -eq "Completed"){break}
        sleep -Seconds 10
    }while($job.State -eq "Running")
    
    if($job.State -eq "Completed"){ Write-EventLog -LogName $logName -Source $logSource -EntryType Information -EventId 2 -Message "Fim da execução script de backup. $jobName"}
    terça-feira, 21 de agosto de 2018 13:45