Saya menggunakan penyebaran aplikasi SCCM 2012 untuk menginstal perangkat lunak. Jenis pemasangan khusus adalah pemasang yang ditulis skrip karena SCCM terus gagal karena kesalahan validasi exe. Script adalah PowerShell dan berhasil menginstal perangkat lunak bahkan ketika dieksekusi oleh SCCM.
Masalahnya adalah bahwa SCCM hanya melihat pengembalian 0 dari penyelesaian dari skrip. Saya sudah mencoba write-host
, return
, write-output
, dan hanya item baris dengan kode untuk reboot lembut. Tak satu pun dari mereka tampaknya dibaca oleh SCCM karena log eksekusi aplikasi menangkap pengembalian 0.
Bagaimana Anda mengeluarkan kode pengembalian dari PowerShell sehingga SCCM dapat menafsirkannya?
powershell
scripting
sccm
sccm-2012-r2
Colyn1337
sumber
sumber
exit 1
di akhir skrip PowerShell?exit
adalahcmd
builtin. Dalam sistem penyebaran lain saya melihat file .ps1 berjalan denganstart
ataucmd /c powershell.exe somefile.ps1
. Maaf karena spitballing tanpa akses ke tes SCCM.Jawaban:
Ada masalah yang diketahui dengan kode keluar PowerShell (lihat akhir dari jawaban ini) yang dapat bermanifestasi saat menggunakan skrip instalasi PowerShell dengan SCCM. Untuk mengatasi masalah ini, saya mengambil dua langkah:
powershell.exe
secara eksplisit.[System.Environment]::Exit()
.Dengan dua ukuran ini, saya tidak punya masalah terkait dengan kode keluar. Itu adalah kemenangan besar karena pemecahan masalah kode keluar dari skrip instalasi adalah proses yang lambat karena Anda harus menunggu klien SCCM untuk memanggil skrip Anda untuk setiap iterasi pemecahan masalah.
Inilah tampilan file batch dan skrip PowerShell:
Install-Application.bat
Install-Application.ps1
Mengapa kode keluar tidak dapat diandalkan saat SCCM memanggil skrip powershell secara langsung?
Berikut ini cara kami mengetahui kode keluar tidak dapat diandalkan:
sumber