Menyelesaikan Isu Pelaksanaan Skrip PowerShell pada Windows Server 2008 R2

Menyelesaikan Isu Pelaksanaan Skrip PowerShell pada Windows Server 2008 R2
Menyelesaikan Isu Pelaksanaan Skrip PowerShell pada Windows Server 2008 R2

Menyelesaikan masalah Sekatan Pelaksanaan Skrip PowerShell

Apabila bekerja dengan Windows Server 2008 R2, pengguna mungkin menghadapi ralat yang menunjukkan bahawa pelaksanaan skrip PowerShell dilumpuhkan pada sistem. Isu ini boleh timbul apabila cuba menjalankan skrip melalui cmd.exe, walaupun selepas menetapkan dasar pelaksanaan kepada Tidak Terhad.

Walaupun mengesahkan bahawa dasar pelaksanaan ditetapkan kepada Tidak Terhad, skrip mungkin masih gagal untuk dilaksanakan, menyebabkan kekecewaan dan menghalang kemajuan. Panduan ini akan meneroka punca biasa isu ini dan menyediakan langkah untuk memastikan pelaksanaan skrip berjaya.

Perintah Penerangan
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force Tetapkan sementara dasar pelaksanaan skrip kepada Bypass untuk sesi PowerShell semasa, membenarkan pelaksanaan semua skrip tanpa sekatan.
powershell -File .\Management_Install.ps1 Melaksanakan fail skrip PowerShell yang ditentukan daripada baris arahan.
New-SelfSignedCertificate Mencipta sijil baru yang ditandatangani sendiri, yang boleh digunakan untuk menandatangani skrip PowerShell untuk pelaksanaan yang dipercayai.
Export-Certificate Mengeksport sijil ke fail, yang kemudiannya boleh diimport ke kedai sijil lain.
Import-Certificate Mengimport sijil ke dalam stor sijil tertentu, seperti Penerbit Dipercayai atau Pihak Berkuasa Pensijilan Root.
Set-AuthenticodeSignature Menandatangani skrip PowerShell dengan sijil tertentu, membenarkannya dilaksanakan pada sistem dengan dasar menandatangani skrip didayakan.

Memahami dan Melaksanakan Dasar Pelaksanaan Skrip dalam PowerShell

Skrip yang disediakan bertujuan untuk menangani isu pelaksanaan skrip PowerShell yang dilumpuhkan pada Windows Server 2008 R2. Skrip pertama menetapkan dasar pelaksanaan kepada **Bypass** untuk sesi PowerShell semasa menggunakan **Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force**. Perintah ini membenarkan semua skrip berjalan tanpa sekatan buat sementara waktu. Skrip kemudiannya menavigasi ke direktori yang mengandungi skrip **Management_Install.ps1** dan melaksanakannya menggunakan **powershell .Management_Install.ps1**. Pendekatan ini memastikan bahawa perubahan dasar pelaksanaan hanyalah sementara dan tidak menjejaskan postur keselamatan keseluruhan sistem.

Skrip kedua, fail kelompok, juga menetapkan dasar pelaksanaan kepada **Bypass** tetapi melakukannya daripada baris arahan. Ia menggunakan **powershell -Command "Set-ExecutionPolicy Bypass -Scope Process -Force"** untuk mencapainya. Selepas menukar dasar pelaksanaan, skrip menavigasi ke direktori skrip dan menjalankan skrip PowerShell menggunakan **powershell -File .Management_Install.ps1**. Skrip kelompok berakhir dengan perintah **jeda** untuk memastikan tetingkap gesaan arahan terbuka, membolehkan pengguna melihat sebarang output atau mesej ralat. Kaedah ini berguna untuk mengautomasikan proses dan menyepadukannya ke dalam proses kelompok yang lebih besar.

Penandatanganan Skrip dan Keselamatan dalam PowerShell

Contoh skrip ketiga menunjukkan cara menandatangani skrip PowerShell untuk mematuhi dasar pelaksanaan yang lebih ketat. Mula-mula, sijil yang ditandatangani sendiri dibuat menggunakan **Sijil Ditandatangani Baharu**. Sijil ini kemudiannya boleh dieksport dengan **Sijil Eksport** dan diimport ke kedai sijil yang dipercayai menggunakan **Sijil Import**. Dengan mengimport sijil ke dalam stor **TrustedPublisher** dan **Root**, sistem akan mempercayai skrip yang ditandatangani dengan sijil ini. Skrip **Management_Install.ps1** kemudian ditandatangani menggunakan **Set-AuthenticodeSignature**.

Penandatanganan skrip memastikan bahawa hanya skrip yang dipercayai boleh dilaksanakan pada sistem, memberikan lapisan keselamatan tambahan. Pendekatan ini amat berguna dalam persekitaran dengan keperluan keselamatan yang ketat di mana dasar pelaksanaan ditetapkan kepada **AllSigned** atau **RemoteSigned**. Dengan menandatangani skrip, pentadbir boleh memastikan bahawa skrip tidak diganggu dan adalah daripada sumber yang dipercayai, sekali gus mengurangkan potensi risiko keselamatan. Kaedah ini menggabungkan keselamatan dengan fungsi, membolehkan skrip yang diperlukan dijalankan sambil mengekalkan integriti sistem.

Menetapkan Dasar Pelaksanaan kepada Pintasan dalam PowerShell

Skrip PowerShell

# Ensure the script execution policy is set to Bypass
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force

# Navigate to the script directory
cd "C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts"

# Execute the PowerShell script
powershell .\Management_Install.ps1

Menggunakan Skrip Berkelompok untuk Mengubah Suai Dasar Pelaksanaan dan Menjalankan Skrip PowerShell

Skrip Berkelompok

@echo off

:: Set PowerShell execution policy to Bypass
powershell -Command "Set-ExecutionPolicy Bypass -Scope Process -Force"

:: Navigate to the script directory
cd "C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts"

:: Run the PowerShell script
powershell -File .\Management_Install.ps1

pause

Mencipta Skrip PowerShell yang Ditandatangani

Skrip PowerShell dengan Tandatangan

# Sample script content
Write-Output "Executing Management Install Script"

# Save this script as Management_Install.ps1

# To sign the script, follow these steps:
# 1. Create a self-signed certificate (if you don't have one)
$cert = New-SelfSignedCertificate -DnsName "PowerShellLocalCert" -CertStoreLocation "Cert:\LocalMachine\My"

# 2. Export the certificate to a file
Export-Certificate -Cert $cert -FilePath "C:\PowerShellLocalCert.cer"

# 3. Import the certificate to Trusted Publishers and Trusted Root Certification Authorities
Import-Certificate -FilePath "C:\PowerShellLocalCert.cer" -CertStoreLocation "Cert:\LocalMachine\TrustedPublisher"
Import-Certificate -FilePath "C:\PowerShellLocalCert.cer" -CertStoreLocation "Cert:\LocalMachine\Root"

# 4. Sign the script with the certificate
Set-AuthenticodeSignature -FilePath .\Management_Install.ps1 -Certificate $cert

Memastikan Pematuhan Dasar Pelaksanaan Skrip dan Keselamatan Sistem

Apabila mengurus Windows Server 2008 R2, adalah penting untuk memahami dasar pelaksanaan berbeza yang tersedia dalam PowerShell dan cara ia memberi kesan kepada pelaksanaan skrip. Dasar pelaksanaan PowerShell direka untuk menghalang pelaksanaan skrip yang berpotensi berbahaya. Empat dasar utama ialah **Terhad**, **AllSigned**, **RemoteSigned** dan **Tidak Terhad**. **Terhad** ialah dasar lalai dan tidak membenarkan sebarang skrip dijalankan. **AllSigned** memerlukan semua skrip dan fail konfigurasi ditandatangani oleh penerbit yang dipercayai. **RemoteSigned** memerlukan semua skrip dan fail konfigurasi yang dimuat turun dari internet ditandatangani oleh penerbit yang dipercayai, tetapi membenarkan skrip yang dibuat secara tempatan dijalankan tanpa tandatangan.

Memahami dasar ini membantu pentadbir memilih tahap keselamatan yang sesuai untuk persekitaran mereka. Dalam senario di mana skrip perlu dilaksanakan dengan kerap, menetapkan dasar kepada **Tidak Terhad** boleh berisiko, kerana ia membenarkan semua skrip berjalan tanpa sebarang sekatan. Sebaliknya, pentadbir harus mempertimbangkan untuk menggunakan **RemoteSigned** atau **AllSigned** untuk mengimbangi keselamatan dengan fungsi. Dengan menandatangani skrip dan mengurus sijil, pentadbir boleh memastikan bahawa hanya skrip yang dipercayai dijalankan pada sistem mereka, mengurangkan risiko menjalankan kod berniat jahat.

Soalan dan Jawapan Lazim mengenai Dasar Pelaksanaan Skrip PowerShell

  1. Bagaimanakah cara saya menyemak dasar pelaksanaan semasa pada sistem saya?
  2. Gunakan arahan Get-ExecutionPolicy dalam PowerShell untuk menyemak dasar pelaksanaan semasa.
  3. Bagaimanakah saya boleh menukar dasar pelaksanaan untuk semua pengguna secara kekal?
  4. Gunakan arahan Set-ExecutionPolicy -ExecutionPolicy [PolicyName] -Scope LocalMachine untuk menukar dasar pelaksanaan untuk semua pengguna.
  5. Apakah yang perlu saya lakukan jika saya menemui skrip yang tidak boleh dilaksanakan kerana sekatan dasar?
  6. Tetapkan dasar kepada **Pintas** menggunakan Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process dan jalankan skrip.
  7. Adakah selamat untuk menggunakan dasar **Tidak Terhad**?
  8. Menggunakan **Tidak Terhad** tidak disyorkan untuk persekitaran pengeluaran kerana ia membenarkan semua skrip dijalankan, yang boleh menjadi risiko keselamatan.
  9. Bagaimanakah cara saya menandatangani skrip PowerShell?
  10. Buat sijil yang ditandatangani sendiri menggunakan New-SelfSignedCertificate dan kemudian menandatangani skrip menggunakan Set-AuthenticodeSignature.
  11. Bolehkah saya mengehadkan pelaksanaan skrip kepada skrip yang dipercayai sahaja?
  12. Ya, dengan menetapkan dasar pelaksanaan kepada **AllSigned** atau **RemoteSigned** dan menandatangani skrip anda.
  13. Apakah perbezaan antara dasar **AllSigned** dan **RemoteSigned**?
  14. **AllSigned** memerlukan semua skrip ditandatangani oleh penerbit yang dipercayai, manakala **RemoteSigned** hanya memerlukan skrip yang dimuat turun dari internet untuk ditandatangani.
  15. Bagaimanakah cara saya membuat sijil yang ditandatangani sendiri untuk menandatangani skrip?
  16. Gunakan arahan New-SelfSignedCertificate -DnsName "PowerShellLocalCert" -CertStoreLocation "Cert:\LocalMachine\My" untuk membuat sijil yang ditandatangani sendiri.
  17. Apakah risiko keselamatan melumpuhkan dasar pelaksanaan skrip?
  18. Melumpuhkan dasar pelaksanaan skrip boleh mendedahkan sistem anda kepada skrip berniat jahat, yang membawa kepada potensi pelanggaran keselamatan dan kehilangan data.

Pengambilan Utama

Memastikan dasar pelaksanaan PowerShell yang betul adalah penting untuk menjalankan skrip pada Windows Server 2008 R2. Menetapkan dasar kepada Bypass atau menggunakan fail kelompok boleh menyelesaikan sementara isu pelaksanaan, tetapi menandatangani skrip menawarkan penyelesaian jangka panjang yang lebih selamat. Pentadbir harus sedar tentang implikasi keselamatan dasar pelaksanaan yang berbeza dan melaksanakan langkah-langkah yang mengimbangi keselamatan dengan keperluan operasi.