Saat menulis skrip PowerShell, saya perhatikan ketika cmdlet tertentu menghadapi masalah mereka memunculkan prompt interaktif, Hapus-Item pada direktori non-kosong menjadi contoh. Ini mematikan ketika mencoba untuk mengotomatiskan tugas, saya lebih suka tindakannya gagal dan melemparkan pengecualian atau mengembalikan kode pengembalian yang buruk sehingga seluruh skrip tidak terkunci menunggu jawaban.
Apakah ada cara untuk memaksa PowerShell gagal secara otomatis dan bukannya mencari input pengguna pada tindakan?
powershell
Chuu
sumber
sumber
Remove-Item
kegagalan dengan cepat?"Jawaban:
Solusi yang diusulkan oleh Eris secara efektif memulai contoh PowerShell lainnya. Cara alternatif untuk melakukan ini, dengan sintaksis yang lebih sederhana, adalah dengan keluar ke instance lain dari powershell.exe.
sumber
Lihat
Get-Help about_Preference_Variables
:Begitu:
sumber
Remove-ADUser
(Server 2012R)Ok, ini benar-benar jelek, tetapi mustard kudus menodainya "bekerja".
Masalah:
Ini hanya akan berfungsi untuk kasus Sederhana (perintah yang tidak melakukan banyak hal dengan lingkungan saat ini). Saya belum menguji sesuatu yang kompleks
$MyPS = [Powershell]::Create()
$MyPS.Commands.AddCommand("Remove-Item")
$MyPS.Commands.AddParameter("Path", "D:\Temp\t")
$MyPS.Invoke()
Keluaran:
sumber
Semua solusi di atas gagal untuk saya ketika saya membuat direktori, yang berarti bahwa saya diminta untuk OK setiap direktori tunggal yang dibuat skrip saya - yang banyak. Apa yang berhasil bagi saya adalah apped | Out-null untuk menyalurkan hasilnya ke Out-Null
Perhatikan bahwa $ Directory adalah string dengan path lengkap ke direktori yang ingin Anda buat. Semoga ini menghemat waktu seseorang: P
sumber
Saya menyarankan dua teknik
a) Tambahkan
-force
b) Tambahkan
-errorAction silently continue
Ini adalah bagaimana saya meneliti cmdlet mana yang mendukung parameter tertentu
sumber
-errorAction SilentlyContinue
adalah-ea 0
.