Saya mengalami banyak masalah dengan menjalankan perintah PowerShell. Yang dilakukannya hanyalah menjalankan perintah yang akan dijalankan di jendela prompt CMD.
Ini perintahnya:
"C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\i386\CmRcViewer.exe" PCNAME
Saya telah mencoba yang berikut ini tetapi tidak berhasil (saya telah mencoba banyak iterasi untuk mencoba dan mendapatkan yang berfungsi. Sintaks mungkin semuanya kacau):
$TEXT = $textbox.Text #$textbox is where the user enters the PC name.
$CMDCOMMAND = "C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\i386\CmRcViewer.exe"
Start-Process '"$CMDCOMMAND" $TEXT'
#iex -Command ('"C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\i386\CmRcViewer.exe"' $TEXT)
Perintah ini hanya akan membuka jendela koneksi jarak jauh SCCM ke komputer yang ditentukan pengguna di kotak teks.
powershell
command-line
cmd
pengguna3585839
sumber
sumber
Jawaban:
Coba ini:
& "C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\i386\CmRcViewer.exe" PCNAME
Bagi PowerShell, string "..." hanyalah string dan PowerShell mengevaluasinya dengan menggemakannya ke layar. Untuk membuat PowerShell menjalankan perintah yang namanya ada dalam string, Anda menggunakan operator panggilan
&
.sumber
ipconfig.exe
tanpa harus menggunakan&
. Satu-satunya saat Anda perlu menggunakan&
adalah memanggil nama perintah dalam bentuk string. Dan Anda harus menggunakan "bentuk string" jika ada spasi di jalur atau nama file.&
, karena PowerShell akan berpikir seluruh string adalah nama yang dapat dieksekusi. Alih-alih mengutip hanya nama yang dapat dieksekusi dan letakkan parameter yang dapat dieksekusi sesudahnya.&
dancmd
?&
adalah operator panggilan PowerShell (alias pemanggilan). Ini memungkinkan Anda untuk menjalankan perintah ketika apa yang Anda miliki adalah string yang berisi nama perintah atau jalur ke exe. Anda juga dapat menentukan scriptblock misalnya&{$foo=42}
atau objek CommandIno misalnya$cmd = Get-Command Get-Date; &$cmd
.cmd
adalah cangkang yang berbeda. Perhatikan bahwa&
mengeksekusi dalam lingkup anak sehingga Anda akan mencatat bahwa setelah blok skrip yang disetel di$foo
atas selesai,$foo
tidak disetel lagi.Untuk menjalankan atau mengonversi file batch secara eksternal dari PowerShell (terutama jika Anda ingin menandatangani semua skrip tugas terjadwal Anda dengan sertifikat) saya cukup membuat skrip PowerShell, misalnya deletefolders.ps1.
Masukkan yang berikut ke dalam skrip:
cmd.exe /c "rd /s /q C:\#TEMP\test1" cmd.exe /c "rd /s /q C:\#TEMP\test2" cmd.exe /c "rd /s /q C:\#TEMP\test3"
* Setiap perintah harus diletakkan di baris baru yang memanggil cmd.exe lagi.
Skrip ini sekarang dapat ditandatangani dan dijalankan dari PowerShell dengan mengeluarkan perintah ke command prompt /
cmd
secara langsung.Ini adalah cara yang jauh lebih aman daripada menjalankan file batch!
sumber
sc query serviceName
dari PowerShell berpikir itu akan dijalankan, tetapi tidak ada keluaran. Saya mencoba beberapa iterasi dari & teknik, tanpa dadu. Tetapi menjalankannya seperti yang Anda rekomendasikan berhasil. Selanjutnya saya menekan cmd.exe /? untuk melihat keajaiban lain apa yang menanti saya. Saya hanya suka menjalankan cmd saat dibutuhkan.Salah satu solusinya adalah menyalurkan perintah Anda dari PowerShell ke CMD. Menjalankan perintah berikut akan mengirimkan
notepad.exe
perintah tersebut ke CMD, yang kemudian akan membuka aplikasi Notepad.PS C:\> "notepad.exe" | cmd
Setelah perintah dijalankan di CMD, Anda akan kembali ke prompt PowerShell, dan dapat terus menjalankan skrip PowerShell Anda.
Editan
Pesan Startup CMD Ditampilkan
Seperti yang ditunjukkan mklement0 , metode ini menampilkan pesan startup CMD. Jika Anda menyalin output menggunakan metode di atas ke terminal lain, pesan startup akan disalin bersamanya.
sumber
&
tidak. Misalnya& "mklink"
tidak bekerja untuk saya saat"mklink" | cmd
bekerjaBagi mereka yang mungkin membutuhkan info ini:
Saya menemukan bahwa Anda dapat menjalankan cukup banyak perintah yang ada di Anda
PATH
dari skrip PS, dan itu akan berfungsi.Terkadang Anda mungkin harus meluncurkan perintah ini sebelumnya dengan
cmd.exe /c
Contoh
Memanggil git dari skrip PS
Saya harus mengemas ulang
git
klien yang dibungkusChocolatey
(bagi mereka yang mungkin tidak tahu, ini semacam toko aplikasi untuk Windows) yang secara masif menggunakan skrip PS.Saya menemukan bahwa, sekali
git
ada diPATH
, perintah seperti$ca_bundle = git config --get http.sslCAInfo
akan menyimpan lokasi
git
crt
file dalam$ca_bundle
variabel.Mencari Aplikasi
Contoh lain yang merupakan kombinasi dari pos SO saat ini dan pos SO ini adalah penggunaan
where
perintah$java_exe = cmd.exe /c where java
akan menyimpan lokasi
java.exe
file dalam$java_exe
variabel.sumber
cmd /c
menjalankan perintah internalnya , sepertimklink
. Sebaliknya,where.exe
adalah program eksternal, sehingga Anda dapat menjalankannya secara langsung. Namun, karena konflik nama denganwhere
alias bawaan PowerShell (untukWhere-Object
), Anda harus menggunakanwhere.exe
; misalnyawhere.exe java
,.Get-Command
alih - alih meneleponcmd
? Sama seperti sebelumnya:$java_exe = $(Get-Command java.exe).Source
Anda harus menggunakan cmdlet Perintah Panggil untuk meluncurkan program eksternal ini. Biasanya ini bekerja tanpa usaha.
Jika Anda membutuhkan lebih dari satu perintah, Anda harus menggunakan cmdlet Invoke-Expression dengan
-scriptblock
opsi.sumber