相信有許多 Unix-like 的愛用者,
對於 sudo 帶來的便利性及安全性,
都有很高的依賴性及倚靠性,
在 Windows 的世界,雖然有個「以系統管理員身分執行」的玩意兒,
但是在習慣使用文字介面如 cmd, vim, PowerShell 的人們來說,
倘若遇到需要系統管理員權限的設定檔或文字檔,
往往就是一句「XXX」之後,還要到開始功能表尋找到 cmd 或 PowerShell,
然後再用滑鼠點右鍵選擇「以系統管理員身分執行」,然後再 cd 到剛剛的資料夾,再用編輯器開啟、編輯、blah blah....
一來一往,往往費神又費時,
今天介紹在 PowerShell 使用時,
可以輸入 Unix-like 中的 sudo (或使用者自己取)
後面再帶 vim 或 notepad 指令,接著被修改的設定檔或文字檔,
便可以系統管理員權限開啟該設定檔或文字檔,以便進行編修!
一、首先「以系統管理員身分執行」開啟 PowerShell,
預設沒錯的話,您會在您的家目錄,如:C:\Users\XXXXXXX
二、輸入指令以便新增 scripts 資料夾:
三、使用編輯器如 vim 或 notepad 開啟 PowerShell 之 Profile 檔:
(預設為 WindowsPowerShell\Microsoft.PowerShell_profile.ps1)
四、新增如下文字於該檔中:
五、存檔並離開。
六、重啟你的 PowerShell ,你將發現上面所新增的資料夾被 mount 起來,可以繼續進行:
七、進入 script 槽後,用慣用的編輯器開啟新增 sudo.ps1 script檔:
八、加入 sudo script 如下:
九、存檔並離開!
十、再次開啟 PowerShell 的 Profile 設定檔:
十一、新增關聯指令:
注意這裡的紅色字 sudo 可以改成任何你想要的字,只要不跟內建指令撞名即可!
十二、重啟 PowerShell,你可以使用:
或
就會以系統管理員權限開啟,當然 Windows 的 UAC 會開啟並問你是或否,此時按「是」,
便會開啟具有系統管理員權限的視窗了!
Reference To: http://techha.us/2010/05/sudo-for-powershell/
http://www.ainotenshi.org/710/%E2%80%98sudo%E2%80%99-for-powershell-sorta
對於 sudo 帶來的便利性及安全性,
都有很高的依賴性及倚靠性,
在 Windows 的世界,雖然有個「以系統管理員身分執行」的玩意兒,
但是在習慣使用文字介面如 cmd, vim, PowerShell 的人們來說,
倘若遇到需要系統管理員權限的設定檔或文字檔,
往往就是一句「XXX」之後,還要到開始功能表尋找到 cmd 或 PowerShell,
然後再用滑鼠點右鍵選擇「以系統管理員身分執行」,然後再 cd 到剛剛的資料夾,再用編輯器開啟、編輯、blah blah....
一來一往,往往費神又費時,
今天介紹在 PowerShell 使用時,
可以輸入 Unix-like 中的 sudo (或使用者自己取)
後面再帶 vim 或 notepad 指令,接著被修改的設定檔或文字檔,
便可以系統管理員權限開啟該設定檔或文字檔,以便進行編修!
一、首先「以系統管理員身分執行」開啟 PowerShell,
預設沒錯的話,您會在您的家目錄,如:C:\Users\XXXXXXX
二、輸入指令以便新增 scripts 資料夾:
New-Item -ItemType directory $HOME\Documents\Scripts
三、使用編輯器如 vim 或 notepad 開啟 PowerShell 之 Profile 檔:
(預設為 WindowsPowerShell\Microsoft.PowerShell_profile.ps1)
notepad.exe $PROFILE
四、新增如下文字於該檔中:
New-PSDrive -name script -PSProvider FileSystem -Root $HOME\Documents\Scripts
五、存檔並離開。
六、重啟你的 PowerShell ,你將發現上面所新增的資料夾被 mount 起來,可以繼續進行:
cd script:
七、進入 script 槽後,用慣用的編輯器開啟新增 sudo.ps1 script檔:
notepad.exe sudo.ps1
八、加入 sudo script 如下:
param(
[switch]$ps, # Switch for running args as powershell script
[string]$file, # Script/Program to run
[string]$arguments = $args # Arguments to program/script
)
# Find our powershell full path
$powershell = (get-command powershell).definition
# Get current directory
$dir = get-location
#If we're running this as a elevated powershell script
if ($ps){
# Script verification
if([System.IO.File]::Exists("$(get-location)\$file")) {
# Set the $script to full path of the ps script
$script = (get-childitem $file).fullname
}
# Create a powershell process
$psi = new-object System.Diagnostics.ProcessStartInfo $powershell
$psi.WorkingDirectory = Get-Location
# Combine the script and its arguments
$sArgs = $script + " " + $arguments
# Set the arguments to be the ps script and it's arguments
$psi.Arguments = "-noexit -command set-location $dir; $sArgs"
# Magic to run as elevated
$psi.Verb = "runas";
}
# We're running something other than a powershells script
else {
# File verification
if([System.IO.File]::Exists("$(get-location)\$file")) {
# Get full path
$file = (get-childitem $file).fullname
}
# Same as above, create proccess/working directory/arguments/runas
$psi = new-object System.Diagnostics.ProcessStartInfo $file
$psi.Arguments = $arguments
$psi.Verb = "runas"
}
# Start the process
[System.Diagnostics.Process]::Start($psi)
九、存檔並離開!
十、再次開啟 PowerShell 的 Profile 設定檔:
notepad.exe $PROFILE
十一、新增關聯指令:
New-Alias -Name sudo 'script:\sudo.ps1'
注意這裡的紅色字 sudo 可以改成任何你想要的字,只要不跟內建指令撞名即可!
十二、重啟 PowerShell,你可以使用:
sudo notepad C:\Windows\System32\drivers\etc\hosts
或
sudo vim $PROFILE
就會以系統管理員權限開啟,當然 Windows 的 UAC 會開啟並問你是或否,此時按「是」,
便會開啟具有系統管理員權限的視窗了!
Reference To: http://techha.us/2010/05/sudo-for-powershell/
http://www.ainotenshi.org/710/%E2%80%98sudo%E2%80%99-for-powershell-sorta
沒有留言:
張貼留言