Cara menjalankan skrip PowerShell

711

Bagaimana cara saya menjalankan skrip PowerShell?

  • Saya memiliki skrip bernama myscript.ps1
  • Saya memiliki semua kerangka kerja yang diperlukan diinstal
  • Saya mengatur kebijakan eksekusi itu
  • Saya telah mengikuti instruksi pada halaman bantuan MSDN ini dan saya mencoba menjalankannya seperti ini: powershell.exe 'C:\my_path\yada_yada\run_import_script.ps1'(dengan atau tanpa --noexit)

yang mengembalikan apa-apa, kecuali bahwa nama file adalah output.

Tidak ada kesalahan, tidak ada pesan, tidak ada. Oh, ketika saya menambahkan -noexit, hal yang sama terjadi, tetapi saya tetap di dalam PowerShell dan harus keluar secara manual.

File .ps1 seharusnya menjalankan program dan mengembalikan tingkat kesalahan tergantung pada output program itu. Tapi aku cukup yakin aku belum sampai di sana.

Apa yang saya lakukan salah?

Pekka
sumber
2
Mulai powershellseperti yang Anda akan mulai cmd. Sekarang Anda dapat menjalankan myscript.ps1skrip seperti yang dapat dieksekusi di (di jendela PowerShell), yaitu.\myscript.ps1
parasrish

Jawaban:

732
  1. Luncurkan Windows PowerShell, dan tunggu sebentar hingga PSperintah muncul
  2. Arahkan ke direktori tempat skrip tinggal

    PS> cd C:\my_path\yada_yada\ (enter)
  3. Jalankan skrip:

    PS> .\run_import_script.ps1 (enter)

Apa yang saya lewatkan ??

Atau: Anda dapat menjalankan skrip PowerShell dari cmd.exeseperti ini:

powershell -noexit "& ""C:\my_path\yada_yada\run_import_script.ps1""" (enter)

sesuai dengan posting blog ini di sini

Atau Anda bahkan dapat menjalankan skrip PowerShell dari aplikasi C # :-)

Eksekusi skrip PowerShell dari aplikasi C # secara sinkron

marc_s
sumber
19
Tautan posting blog Anda melakukannya. Saya harus menggunakan powershell -noexit "& "C:\yada_yada\run_import_script.ps1"(perhatikan tiga tanda kutip ganda) Saya tidak begitu mengerti mengapa, tetapi pada titik ini, saya tidak begitu peduli :) Terima kasih banyak!
Pekka
16
Apa sebenarnya yang "&dilakukan?
BlueRaja - Danny Pflughoeft
16
Menurut technet.microsoft.com/en-us/library/ee176949.aspx , '&' adalah untuk "Jika Anda benar-benar ingin mengeksekusi nilai string itu (yaitu, jika Anda ingin menjalankan skrip yang jalurnya disertakan dalam tanda kutip ganda) Anda perlu mengawali jalan dengan operator Panggilan (ampersand). "
Doug Dawson
29
tidak ada yang bekerja untuk saya sampai saya melewati kebijakan eksekusi default powershell untuk skrip unsigned saya yang baru dibuat. Antara lain ini diperlukan restart PowerShell Sebagai Administrator. Sepenuhnya setuju dengan @LukePuplett - sangat brilian untuk membuat case-use yang paling sederhana membutuhkan waktu 20 menit untuk googling dan menghabiskan waktu. Dan pesan kesalahan! Rupanya orang-orang ini bekerja di IBM ... di tahun 70-an.
Spike0xff
15
Sebagaimana dinyatakan dalam komentar di bawah, kebijakan eksekusi harus dilewati. Salah satu item yang tidak dibahas di sini adalah cara menjalankan skrip PowerShell dari baris perintah yang melewati parameter. Untuk melakukan ini: ketikpowershell -executionpolicy bypass ".\myscript.ps1 yadayadayada"
Jim Lahman
230

Jika Anda menggunakan PowerShell 2.0, gunakan -Fileparameter PowerShell.exe untuk memanggil skrip dari lingkungan lain, seperti cmd.exe. Sebagai contoh:

Powershell.exe -File C:\my_path\yada_yada\run_import_script.ps1
Keith Hill
sumber
5
Apakah ada cara untuk menambahkan parameter ke doa seperti itu?
Alexander Groß
11
Anda seharusnya bisa melacak args setelah path file skrip. Dari penggunaan PowerShell.exe - [-File <filePath> <args>]
Keith Hill
"tidak dapat dimuat karena eksekusi skrip dinonaktifkan pada sistem ini. Silakan lihat" dapatkan bantuan tentang tanda-tanda "untuk detail lebih lanjut."
Pavel Vlasov
7
Jika Anda belum mengaktifkan eksekusi skrip PowerShell di sistem Anda, tambahkan parameter-ExecutionPolicy Bypass
Keith Hill
4
FYI ini juga berfungsi untuk PowerShell 1.0 dalam pengalaman saya (Windows 2012 Server)
knocte
189

Jika Anda ingin menjalankan skrip tanpa mengubah kebijakan eksekusi skrip default, Anda dapat menggunakan bypass sakelar saat meluncurkan Windows PowerShell .

powershell [-noexit] -executionpolicy bypass -File <Filename>
Chingiz Musayev
sumber
11
Juga, sertakan -nologoopsi untuk menyingkirkan spanduk startup
swdev
73

Tipe:

powershell -executionpolicy bypass -File .\Test.ps1

CATATAN: Ini Test.ps1adalah skrip PowerShell.

Sudheesh
sumber
Ini harus dijalankan dalam powershell karena powershell -executionpolicy bypass -File .\Test.ps1dengan asumsi Anda direktori kerja saat ini berisi Test.ps1
Yeow_Meng
29

Saya memiliki masalah yang sama, dan saya mencoba dan mencoba ... Akhirnya saya menggunakan:

powershell.exe -noexit "& 'c:\Data\ScheduledScripts\ShutdownVM.ps1'"

Dan letakkan baris ini dalam file batch, dan ini berfungsi.

Dennis
sumber
22

Jika Anda hanya memiliki PowerShell 1.0 , ini tampaknya cukup berhasil:

powershell -command - < c:\mypath\myscript.ps1

Ini pipa file skrip ke baris perintah PowerShell.

AndyM
sumber
3
Trik yang berguna ketika kebijakan keamanan tidak mengizinkan eksekusi skrip.
Aron Lorincz
17

Sangat mudah. Klik kanan file .ps1 di Windows dan di menu shell klik Run with PowerShell .

elektroniktonik
sumber
Ini berfungsi untuk menjalankan skrip dengan cepat tanpa harus mengaktifkan eksekusi skrip dengan kebijakan eksekusi. Terima kasih!
B01
Ini yang saya cari, terima kasih!
Aamol
11

Menggunakan file cmd (BAT):

@echo off
color 1F
echo.

C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File "PrepareEnvironment.ps1"

:EOF
echo Waiting seconds
timeout /t 10 /nobreak > NUL

Jika Anda perlu dijalankan sebagai administrator :

  1. Buat pintasan mengarah ke prompt perintah (Saya menamakannya Prompt Perintah Administratif)
  2. Buka properti pintasan dan buka tab Kompatibilitas
  3. Di bawah bagian Level Privilege, pastikan kotak centang di sebelah "Jalankan program ini sebagai administrator" dicentang
Kiquenet
sumber
11

Cara mudah adalah dengan menggunakan PowerShell ISE , buka skrip, jalankan dan aktifkan skrip Anda, fungsikan ...

Masukkan deskripsi gambar di sini

Jose Evaristo Cepeda Barrera
sumber
10

Jika skrip Anda dinamai dengan .ps1ekstensi dan Anda berada di jendela PowerShell, Anda hanya menjalankan ./myscript.ps1(dengan asumsi file ada di direktori kerja Anda)

Ini benar bagi saya pada Windows 10 dengan PowerShell versi 5.1, dan saya rasa saya tidak melakukan apa pun untuk membuatnya mungkin.

rainabba
sumber
2
Bagaimana ini menjawab pertanyaan?
Peter Mortensen
4
itu benar-benar menjawab pertanyaan: bagaimana cara menjalankan skrip PowerShell? jawaban: startup PowerShell konsol, kemudian jalankan script. mudah. sederhana. Bekerja di Linux juga.
Thufir
4
Ini benar-benar menjawab pertanyaan, dan persis apa yang saya cari. karena myscript.ps1tidak bekerja, melemparkan kesalahan, tetapi dengan ./mengeksekusinya.
Jeff
7
  • Berikan path skrip, yaitu, pengaturan path oleh cmd:

    $> . c:\program file\prog.ps1

  • Jalankan fungsi titik masuk dari PowerShell:

    Sebagai contoh, $> add or entry_func or main

pkm
sumber
Menjalankan perintah Anda dari prompt cmd: >$ . c:\program file\prog.ps1 '.' is not recognized as an internal or external command, operable program or batch file.dan>$ add or entry_func or main 'add' is not recognized as an internal or external command, operable program or batch file.
Suncat2000
1

Gunakan -Fileparameter di depan nama file. Kutipan membuat PowerShell berpikir itu adalah serangkaian perintah.

Insinyur
sumber
1

Saya punya jawaban yang sangat sederhana yang berfungsi:

  1. Buka PowerShell dalam mode administrator
  2. Lari: set-executionpolicy unrestricted
  3. Buka jendela PowerShell biasa dan jalankan skrip Anda.

Saya menemukan solusi ini mengikuti tautan yang diberikan sebagai bagian dari pesan kesalahan: Tentang Kebijakan Eksekusi

solstinger
sumber