Saya mencoba menjalankan skrip ini di PowerShell. Saya telah menyimpan skrip di bawah ini seperti ps.ps1
pada desktop saya.
$query = "SELECT * FROM Win32_DeviceChangeEvent WHERE EventType = 2"
Register-WMIEvent -Query $query -Action { invoke-item "C:\Program Files\abc.exe"}
Saya telah membuat skrip batch untuk menjalankan skrip PowerShell ini
@echo off
Powershell.exe set-executionpolicy remotesigned -File C:\Users\SE\Desktop\ps.ps1
pause
Tapi saya mendapatkan kesalahan ini:
./
dan memiliki bendera yang dapat dieksekusi di Unix.Saya menjelaskan mengapa Anda ingin memanggil skrip PowerShell dari file batch dan bagaimana melakukannya di posting blog saya di sini .
Ini pada dasarnya yang Anda cari:
Dan jika Anda perlu menjalankan skrip PowerShell Anda sebagai admin, gunakan ini:
Daripada mengkodekan seluruh path ke skrip PowerShell, saya sarankan menempatkan file batch dan file skrip PowerShell di direktori yang sama, seperti yang dijelaskan oleh posting blog saya.
sumber
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}";
ataupowershell -Command "Invoke-WebRequest https://www.example.com/example.ics -OutFile c:\_my\file.ics"
, atau menggunakan opsi-File yang sama di file .ps1, atau(New-Object Net.WebClient).DownloadFile
. Ada ide?Jika Anda ingin menjalankan dari direktori saat ini tanpa jalur yang sepenuhnya memenuhi syarat, Anda dapat menggunakan:
sumber
Jika Anda menjalankan file batch memanggil PowerShell sebagai administrator, Anda lebih baik menjalankannya seperti ini, menghemat semua masalah Anda:
Lebih baik menggunakan
Bypass
...sumber
Jika Anda ingin menjalankan beberapa skrip, Anda dapat menggunakan
Set-executionpolicy -ExecutionPolicy Unrestricted
dan kemudian mengatur ulang denganSet-executionpolicy -ExecutionPolicy Default
.Perhatikan bahwa kebijakan eksekusi hanya diperiksa saat Anda memulai eksekusi (atau begitulah tampaknya) dan agar Anda dapat menjalankan pekerjaan di latar belakang dan segera mereset kebijakan eksekusi.
sumber
Cara mudah lain untuk mengeksekusi skrip ps dari batch adalah dengan menggabungkannya antara ECHO dan karakter Redirection, (> dan >>), contoh:
Baris terakhir menghapus file temp yang dibuat.
sumber
Jika skrip login PowerShell Anda berjalan setelah 5 menit (seperti milik saya) pada server 2012, ada pengaturan GPO di server - 'Konfigurasikan skrip Login Tunda' pengaturan default 'tidak dikonfigurasi' ini akan menyebabkan penundaan 5 menit sebelum menjalankan skrip login.
sumber
Sampel tes kecil. Cmd
sumber