Yanıtlar:
Masaüstünüzde ek bir simge yardımıyla, bunu yapmanın bir yolu. Sanırım masaüstünüzde yalnızca tek bir simge olmasını istiyorsanız, komut dosyasını bir başkasına taşıyabilirsiniz.
Artık masaüstünüzdeki yeni kısayolu çift tıklatarak yükseltilmiş olan betiği çalıştırabilirsiniz.
script.ps1
, kısayol gibi powershell.exe -f script.ps1
, ancak ikincisi yönetici olarak çalışacak şekilde ayarlanabilir ( veya anahtarın powershell.exe /?
açıklamasına bakın )-f
-File
UAC özellikli sistemlerde, bir komut dosyasının tam yönetici ayrıcalıklarıyla çalıştığından emin olmak için, bu kodu komut dosyanızın başına ekleyin:
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'
komut dosyanızı-yükseltilmiş anahtarla çalıştırırken, çalıştırmadan önce ayrıcalıkları yükseltmeye çalışır.
param(...)
ileri doğru yönlendir -elevated
, tam olarak nasıl oluşturduğun konusunda zekice olmalısın ArgumentList
, muhtemelen String[]
formu kullanmak isteyeceksin .
Aynı güç kabuğundaysanız bunu yapabilirsiniz:
Start-Process powershell -verb runas -ArgumentList "-file fullpathofthescript"
C:\Windows\System32
. Geçerli dizini koruyan bir alternatif: stackoverflow.com/a/57033941/2441655
Masaüstünüze oturduğundan, bunu yapmanın en kolay yolunun onu yükseltme aracına sürüklemek olduğunu söyleyebilirim .
Aksi takdirde kullanarak ayrı senaryo yapabilir komutu sizin ps1 senaryo üzerinde.elevate
Veya elevate
yalnızca servis başlangıç bitine uygulayabilirsiniz .
PowerShell ISE,% windir% \ system32 \ WindowsPowerShell \ v1.0 \ PowerShell_ISE.exe konumunda yaşıyor. Bunu sağ tıklayıp "Yönetici olarak çalıştır" ı seçebilir ve komut dosyasını oradan çalıştırabilirsiniz.
Ayrıca, Windows Logosu> Tüm Programlar> Donatılar> Windows PowerShell altında da bulabilirsiniz ve bu kısayolları ile aynı şeyi yapın.
Bir Powershell betiğini yönetici olarak başlatmak için, doğrudan Explorer içerik menüsünden bir seçenek istiyorsanız, cevabımın 2. bölümüne bakın: https://stackoverflow.com/a/57033941/2441655
Bunu betiğin başına ekleyin:
$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
komutunu "tamamlamak" için komut dosyası yolunun önüne eklendikten sonra kullanılabilir hale geldi …