將以下命令保存為 HostsModify.ps1,然后執行即可
1 #該腳本用來添加hosts解析記錄。腳本在執行的時候會判斷當前用戶是否為管理員,如果不是則彈出提示框口,要求輸入相應密碼 2 If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) 3 { 4 $arguments = "& '" + $myinvocation.mycommand.definition + "'" 5 Start-Process powershell -Credential administrator -WindowStyle Hidden -ArgumentList $arguments 6 Break 7 } 8 9 #下面為要執行的命令 10 #在hosts中添加解析記錄 11 $line = "127.0.0.1 www.sapien.com" 12 $file = "$env:windir\system32\drivers\etc\hosts" 13 out-file -InputObject $line -filepath $file -append -Encoding default
刪除hosts中添加的解析記錄
1 #刪除hosts中添加的解析記錄 2 $line = "127.0.0.1 www.sapien.com" 3 $file = "$env:windir\system32\drivers\etc\hosts" 4 #$contents = gc $file | ? {!($_.contains($line))} #選擇不包含$line的行 5 $contents = gc $file | ? {$_ -ne $line} #選擇不等於$line的行 6 clear-content $file 7 out-file -InputObject $contents -filepath $file -append -Encoding default
###################################################
腳本直接以管理員權限運行(將管理員賬戶和密碼寫入腳本中)
1 #該腳本用來在hosts文件中添加解析記錄。如果當前用戶不是管理員,則會直接以管理員權限運行(可以將管理員賬戶和密碼寫入腳本中) 2 If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) 3 { 4 $UserName = "administrator" #定義管理員賬戶名稱 5 $serverpass = "cmr" #定義管理員賬戶密碼 6 $Password = ConvertTo-SecureString $serverpass -AsPlainText –Force 7 $cred = New-Object System.Management.Automation.PSCredential($UserName,$Password) 8 $arguments = "& '" + $myinvocation.mycommand.definition + "'" 9 Start-Process powershell -Credential $cred -WindowStyle Hidden -ArgumentList $arguments 10 Break 11 } 12 13 #下面為要執行的腳步命令 14 #在hosts中添加解析記錄 15 $line = "127.0.0.1 www.sapien.com" 16 $file = "$env:windir\system32\drivers\etc\hosts" 17 out-file -InputObject $line -filepath $file -append -Encoding default
Start-Process -Verb runas 這里的 runas是以管理員權限運行,但是前提是當前用戶必須已經是管理員,效果等同於:
參考:http://www.pstips.net/force-script-run-as-admin.html