Jawaban:
Ini adalah salah satu cara melakukannya, dengan bantuan ikon tambahan di desktop Anda. Saya kira Anda bisa memindahkan skrip orang lain jika Anda hanya ingin memiliki satu ikon di desktop Anda.
Anda sekarang dapat menjalankan skrip ditinggikan dengan mengklik dua kali pintasan baru di desktop Anda.
script.ps1
bekerja, seperti cara pintas ke powershell.exe -f script.ps1
, tetapi yang terakhir dapat diatur untuk dijalankan sebagai administrator (lihat powershell.exe /?
untuk penjelasan tentang -f
atau -File
beralih)
Pada sistem berkemampuan UAC, untuk memastikan skrip berjalan dengan hak istimewa admin penuh, tambahkan kode ini di awal skrip Anda:
param([switch]$Elevated)
function Test-Admin {
$currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
$currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}
if ((Test-Admin) -eq $false) {
if ($elevated)
{
# tried to elevate, did not work, aborting
}
else {
Start-Process powershell.exe -Verb RunAs -ArgumentList ('-noprofile -noexit -file "{0}" -elevated' -f ($myinvocation.MyCommand.Definition))
}
exit
}
'running with full privileges'
saat menjalankan skrip Anda dengan sakelar -elevated, ia akan mencoba untuk meningkatkan hak istimewa sebelum berjalan.
param(...)
atas dan meneruskannya sebelum -elevated
, Anda harus pandai tentang bagaimana Anda membangunnya ArgumentList
, mungkin ingin menggunakan String[]
formulir itu.
Jika Anda berada di PowerShell yang sama Anda bisa melakukan ini:
Start-Process powershell -verb runas -ArgumentList "-file fullpathofthescript"
C:\Windows\System32
. Alternatif yang mempertahankan direktori saat ini: stackoverflow.com/a/57033941/2441655
Karena itu duduk di desktop Anda, saya akan mengatakan cara paling mudah untuk menyelesaikan ini adalah menyeretnya ke gadget ketinggian .
Jika tidak, Anda bisa membuat script terpisah menggunakan satu elevate
perintah pada script PS1 Anda.
Atau, Anda bisa menerapkan elevate
hanya pada bit yang memulai layanan.
PowerShell ISE hidup di% windir% \ system32 \ WindowsPowerShell \ v1.0 \ PowerShell_ISE.exe. Anda dapat mengklik kanan itu dan memilih "Jalankan sebagai administrator" dan jalankan skrip dari sana.
Anda juga dapat menemukannya di bawah Logo Windows> Semua Program> Aksesori> Windows PowerShell dan lakukan hal yang sama dengan pintasan tersebut.
Jika Anda ingin opsi untuk meluncurkan skrip Powershell sebagai adminstrator, langsung dari menu konteks Explorer, lihat bagian 2 dari jawaban saya di sini: https://stackoverflow.com/a/57033941/2441655
Tambahkan ini ke awal skrip:
$currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
$testadmin = $currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
if ($testadmin -eq $false) {
Start-Process powershell.exe -Verb RunAs -ArgumentList ('-noprofile -noexit -file "{0}" -elevated' -f ($myinvocation.MyCommand.Definition))
exit $LASTEXITCODE
}
powershell -f
di depan lintasan skrip, sehingga untuk "menyelesaikan" perintah ...