Tiedäthän, että jos olet järjestelmän järjestelmänvalvoja ja voit vain napsauttaa hiiren oikealla painikkeella esimerkiksi eräkomentosarjaa ja suorittaa sen järjestelmänvalvojana syöttämättä järjestelmänvalvojan salasanaa?
Mietin, miten tämä voidaan tehdä PowerShell-skriptillä. En halua joutua syöttämään salasanaani; haluan vain jäljitellä hiiren kakkospainikkeella tapahtuvaa Run As Administrator -menetelmää.
Kaikki tähän mennessä lukemani vaativat järjestelmänvalvojan salasanan antamista.
Voit helposti lisätä joitain rekisterimerkintöjä, jotta saat "Suorita järjestelmänvalvojana" -yhteysvalikon .ps1-tiedostoille:
New-Item -Path "Registry::HKEY_CLASSES_ROOT\Microsoft.PowershellScript.1\Shell\runas\command" `
-Force -Name '' -Value '"c:\windows\system32\windowspowershell\v1.0\powershell.exe" -noexit "%1"'
(päivitetty yksinkertaisempaan skriptiin @Shaylta)
Periaatteessa kohdassa HKCR:\Microsoft.PowershellScript.1\Shell\runas\command
asetetaan oletusarvo skriptin kutsumiseksi Powershellin avulla.
Tämä käyttäytyminen on suunniteltu. Suojaustasoja on useita, sillä Microsoft ei todellakaan halua, että .ps1-tiedostot ovat uusin sähköpostivirus. Joidenkin mielestä tämä on ristiriidassa tehtävien automatisoinnin käsitteen kanssa, mikä on reilua. Vista+:n turvallisuusmalli on poistaa asioiden automatisointi, jolloin käyttäjä hyväksyy ne.
Epäilen kuitenkin, että jos käynnistät powershellin itse korotettuna, sen pitäisi pystyä suorittamaan eräajotiedostoja pyytämättä salasanaa uudelleen, kunnes suljet powershellin.