Powershell 添加 su 命令

因為 Linux 用習(xí)慣了模聋,沒有 su/sudo命令總覺得不太方便,經(jīng)過一番搜索,決定自己來實現(xiàn)一個 su 命令瞳浦。
基本思路是:

  • 通過別名來調(diào)用一個自定義函數(shù)(函數(shù)可以寫在類似于 .bashrc 這樣的文件里)
  • 函數(shù)要能提權(quán)(不需要繞過UAC)

實現(xiàn)

那么我們先確定 .bashrc 類似的配置文件的位置。

> Get-Variable PROFILE

Name                           Value
----                           -----
PROFILE                        C:\Users\Yourname\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

然后用編輯器(如 Notepad++ 或 Notepad2)打開這個文件废士,在里面輸入如下內(nèi)容:

function su-fun {Start-Process powershell -Verb runAs -argumentlist '-NoExit', "cd '$pwd'"}
set-alias su su-fun
set-alias sudo su-fun

保存即可叫潦。

解析:

首先我們看這一句

Start-Process powershell -Verb runAs -argumentlist '-NoExit', "cd '$pwd'"

前半段很好理解,Start-Process powershell -Verb runAs就是新建一個 Powershell 窗口官硝,后面的 -verb runAs 就是 “Run as Administrator 的意思矗蕊,也就是以管理員身份啟動一個新的 Powershell 窗口短蜕。

后半段是什么意思呢?細(xì)心的人會發(fā)現(xiàn)傻咖,通過之前那句命令啟動的 shell 的工作目錄是在默認(rèn)工作目錄朋魔,也就是C:\Windows\System32,而不是我們之前的位置卿操。那么我們怎么樣吧工作目錄傳遞過去呢警检?

首先我想到的是 start-process-WorkingDirectory <String> 參數(shù),但是實際測試發(fā)現(xiàn)不管用害淤,應(yīng)該是安全起見扇雕,RunAs 和 WorkingDirectory 不能同時啟用,請參見 Stack Overflow

In practice, as of PSv5 – and the docs do not mention that – the -WorkingDirectory parameter is not respected if you start a process elevated (with administrative privileges, which is what -Verb RunAs – somewhat obscurely – does): the location defaults to $env:SYSTEMROOT\system32 (typically, C:\Windows\System32)

與此同時窥摄,該貼答主還貼出了解決方案

Start-Process -FilePath powershell.exe -Verb Runas -ArgumentList '-NoExit', '-Command', 'cd C:\ws'

也就是說镶奉,把 cd xxx 作為一個命令傳入新開的 Powershell 中。
但我們不能照搬嘛崭放,我們要把 C:\ws 改成我們的當(dāng)前目錄腮鞍,而在 Powershell 中,存有當(dāng)前目錄的變量就是 $pwd莹菱,于是命令便順理成章地變成了

Start-Process -FilePath powershell.exe -Verb Runas `
  -ArgumentList '-NoExit', '-Command', "cd '$pwd'"

$pwd 外加上了引號移国,避免路徑中包含空格時出問題

命令有了,怎么讓這個命令擁有別名呢道伟?當(dāng)然迹缀,我們可以把這個命令保存為批處理腳本放到 C:\Windows\System32,但這樣畢竟不優(yōu)雅蜜徽,有沒有不用腳本也能達(dá)到相同效果的呢祝懂?我首先想到的就是 Set-Alias 這個命令,Alias 就是別名的意思嘛拘鞋。但是 Set-Alias 不能設(shè)置這么長的命令的別名砚蓬,怎么辦呢?

又是一番搜索盆色,找到了這個How to create a complex powershell alias

里面提到灰蛙,可以先用 function 把要執(zhí)行的代碼塊包起來,然后給這個 function 一個別名隔躲。

于是整體思路就出來了:在配置文檔里面用 function 創(chuàng)建代碼塊摩梧,并且給它一個別名。

function sudo-fun {Start-Process powershell -Verb runAs -argumentlist '-NoExit', "cd '$pwd'"}
set-alias sudo sudo-fun

DEBUG

若出現(xiàn)如圖所示錯誤宣旱,是因為你的系統(tǒng)為了自保護(hù)仅父,默認(rèn)禁用了ps腳本(也就是我們的配置文件)的執(zhí)行,我們需要用管理員身份執(zhí)行這個命令 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser 來允許它

這樣子就可以了

參考:about_Execution_Policies

參考文檔:Start-Process - Microsoft Docs

EOF

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市笙纤,隨后出現(xiàn)的幾起案子耗溜,更是在濱河造成了極大的恐慌,老刑警劉巖省容,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抖拴,死亡現(xiàn)場離奇詭異,居然都是意外死亡蓉冈,警方通過查閱死者的電腦和手機(jī)城舞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來寞酿,“玉大人家夺,你說我怎么就攤上這事》サ” “怎么了拉馋?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長惨好。 經(jīng)常有香客問我煌茴,道長,這世上最難降的妖魔是什么日川? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任蔓腐,我火速辦了婚禮,結(jié)果婚禮上龄句,老公的妹妹穿的比我還像新娘回论。我一直安慰自己,他們只是感情好分歇,可當(dāng)我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布傀蓉。 她就那樣靜靜地躺著,像睡著了一般职抡。 火紅的嫁衣襯著肌膚如雪葬燎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天缚甩,我揣著相機(jī)與錄音谱净,去河邊找鬼。 笑死蹄胰,一個胖子當(dāng)著我的面吹牛岳遥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播裕寨,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了宾袜?” 一聲冷哼從身側(cè)響起捻艳,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎庆猫,沒想到半個月后认轨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡月培,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年嘁字,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杉畜。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡纪蜒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出此叠,到底是詐尸還是另有隱情纯续,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布灭袁,位于F島的核電站猬错,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏茸歧。R本人自食惡果不足惜倦炒,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望软瞎。 院中可真熱鬧逢唤,春花似錦、人聲如沸铜涉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芙代。三九已至吊奢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間纹烹,已是汗流浹背页滚。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留铺呵,地道東北人裹驰。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像片挂,于是被迫代替她去往敵國和親幻林。 傳聞我的和親對象是個殘疾皇子贞盯,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,381評論 0 5
  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,451評論 0 13
  • 天凈沙·軍訓(xùn) 碧天綠樹草坪,教官老師學(xué)生沪饺, 軍姿跑步隊形躏敢。烈日當(dāng)空, 新學(xué)子苦練中整葡。
    攻她城做她王_6acc閱讀 1,819評論 0 1
  • 嗯件余,怎么說那,這幾年還是經(jīng)歷了很多的遭居,今年我20歲啼器,14年六月份我參加了高考,到了上海上大學(xué)俱萍,哈端壳,怎么說那,其實我...
    talltangrui閱讀 226評論 0 0
  • 如果每天當(dāng)成最后一天來算,你會做些什么腥寇?這個命題已經(jīng)被無數(shù)人假設(shè)過成翩,也無數(shù)個人對此進(jìn)行反思且有自己各種各樣的...
    一酥包閱讀 140評論 0 0