Pertanyaan menjalankan PowerShell's Invoke-Item dengan switch


Saya mencoba membuat skrip PowerShell untuk meluncurkan program setelah saya mem-boot mesin saya. Saya mengambil barang-barang dari area "run" registry dan menempatkannya dalam skrip sesuai urutan yang saya inginkan dan setelah memasukkan beberapa penundaan untuk item yang tidak penting untuk dijalankan dengan segera. Ini adalah kode untuk memulai Outlook misalnya:

# Outlook
Start-Sleep -s 10
Invoke-Item "c:\Program Files (x86)\Microsoft Office\Office14\OUTLOOK.EXE"

Ini berfungsi untuk jalur yang tidak memiliki sakelar, tetapi saya tidak bisa berfungsi jika ada sakelar yang terlibat. Misalnya ini adalah perintah peluncuran untuk Windows Live Messenger:

c:\Program Files (x86)\Windows Live\Messenger\msnmsgr.exe /background

Jadi ruang-ruang itu juga menyebabkan beberapa masalah. Saya sudah mencoba ini:

#Start-Sleep -s 10
$test= {"c:\Program Files (x86)\Windows Live\Messenger\msnmsgr.exe"}
Invoke-Item $test /background

tetapi itu juga tidak berhasil.

Ada ide?


2
2018-05-15 08:51


asal




Jawaban:


Menggunakan Invoke-Expression :

#Start-Sleep -s 10
$test= "c:\Program Files (x86)\Windows Live\Messenger\msnmsgr.exe /background"
Invoke-Expression $test 

1
2018-05-15 19:03





Hai seseorang di Twitter membantu saya menemukan solusinya.

Saya tidak memerlukan perintah Invoke-Item sama sekali dan saya memang mencoba tanpa itu pada awalnya, tetapi memulai dengan sebuah ampersand bekerja. Jadi, garis saya seharusnya:

& 'c:\Program Files (x86)\Windows Live\Messenger\msnmsgr.exe' /background

Harapan yang membantu orang lain di masa depan karena saya tidak dapat menemukan banyak online.


1
2018-05-15 21:40