Estou tentando executar este script no PowerShell. Salvei o script abaixo como ps.ps1
na minha área de trabalho.
$query = "SELECT * FROM Win32_DeviceChangeEvent WHERE EventType = 2"
Register-WMIEvent -Query $query -Action { invoke-item "C:\Program Files\abc.exe"}
Eu criei um script em lote para executar esse script do PowerShell
@echo off
Powershell.exe set-executionpolicy remotesigned -File C:\Users\SE\Desktop\ps.ps1
pause
Mas estou recebendo este erro:
./
e com um sinalizador executável no Unix.Explico por que você deseja chamar um script do PowerShell a partir de um arquivo em lotes e como fazê-lo na minha postagem no blog aqui .
Isto é basicamente o que você está procurando:
E se você precisar executar o script do PowerShell como administrador, use o seguinte:
Em vez de codificar o caminho inteiro para o script do PowerShell, recomendo colocar o arquivo em lotes e o arquivo de script do PowerShell no mesmo diretório, como descreve a postagem do meu blog.
fonte
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass Invoke-WebRequest https://www.example.com/example.ics -OutFile C:\_my\script.ics' -Verb RunAs}";
oupowershell -Command "Invoke-WebRequest https://www.example.com/example.ics -OutFile c:\_my\file.ics"
, ou usando a opção -File para o mesmo em um arquivo .ps1 ou(New-Object Net.WebClient).DownloadFile
. Alguma ideia?Se você deseja executar a partir do diretório atual sem um caminho completo, você pode usar:
fonte
Se você executar um arquivo em lotes chamando o PowerShell como administrador, é melhor executá-lo assim, poupando todo o problema:
É melhor usar
Bypass
...fonte
Se você quiser executar alguns scripts, poderá usar
Set-executionpolicy -ExecutionPolicy Unrestricted
e redefinir comSet-executionpolicy -ExecutionPolicy Default
.Observe que a política de execução só é verificada quando você inicia sua execução (ou pelo que parece) e, portanto, é possível executar tarefas em segundo plano e redefinir a política de execução imediatamente.
fonte
Outra maneira fácil de executar um script ps do lote é simplesmente incorporá-lo entre os caracteres ECHO e Redirection, (> e >>), exemplo:
A última linha exclui o arquivo temporário criado.
fonte
Se o script de logon do PowerShell estiver em execução após 5 minutos (como o meu) em um servidor de 2012, haverá uma configuração de GPO em um servidor - 'Configurar Atraso do Script de Logon', a configuração padrão 'não configurada', isso deixará um atraso de 5 minutos antes de executar o script de login.
fonte
Amostra pequena test.cmd
fonte