本篇文章為大家展示了PowerShell中怎么繞過訪問限制,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
站在用戶的角度思考問題,與客戶深入溝通,找到白水網(wǎng)站設(shè)計與白水網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站制作、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、空間域名、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋白水地區(qū)。
首先,我們?yōu)槭裁床贿m用powershell.exe來執(zhí)行我們的.ps1腳本呢?因為PowerShell腳本跟C#一樣,它們兩個對于.NET框架而言,都只是“前端”方面的東西,它們的本質(zhì)都只是一種編程語言。不過在C#中,我們需要對程序代碼進(jìn)行編譯才可以使用和執(zhí)行,即編譯型語言,這是它和PowerShell這種解釋型腳本語言有很大區(qū)別。
鑒于PowerShell.exe只是.NET程序集“system.management.automation”的解釋器,因此它應(yīng)該可以在C程序中與這個對象進(jìn)行交互并執(zhí)行.ps1腳本。
下面給出的就是實例代碼:
using System.Collections.ObjectModel; using System.Management.Automation; using System.Management.Automation.Runspaces; using System.IO;using System;using System.Text;namespace PSLess{ class PSLess { static void Main(string[] args) { if(args.Length ==0) Environment.Exit(1); string script=LoadScript(args[0]); string s=RunScript(script); Console.WriteLine(s); Console.ReadKey(); } private static string LoadScript(string filename) { string buffer =""; try { buffer = File.ReadAllText(filename); } catch (Exception e) { Console.WriteLine(e.Message); Environment.Exit(2); } return buffer; } private static string RunScript(string script) { Runspace MyRunspace = RunspaceFactory.CreateRunspace(); MyRunspace.Open(); Pipeline MyPipeline = MyRunspace.CreatePipeline(); MyPipeline.Commands.AddScript(script); MyPipeline.Commands.Add("Out-String"); Collection<PSObject> outputs = MyPipeline.Invoke(); MyRunspace.Close(); StringBuilder sb = new StringBuilder(); foreach (PSObject pobject in outputs) { sb.AppendLine(pobject.ToString()); } return sb.ToString(); } }}
其中的RunScript()方法會創(chuàng)建一個“runspace”對象,我們可以將其視作是PowerShell運行時的一個獨立實例。接下來,我們需要將腳本添加到新創(chuàng)建的pipeline中,并對通信信道進(jìn)行排序,最后通過Invoke()方法執(zhí)行我們的腳本命令。
最終的結(jié)果將會被追加到我們的字符串生成器中,然后作為字符串發(fā)回給調(diào)用函數(shù),以便顯示在控制臺的輸出結(jié)果中。這也就是為什么我們要在命令中添加“Out-String”的原因。
怎么樣,整個過程很簡單吧?
接下來,我們需要對代碼進(jìn)行編譯并完成代碼測試。
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe/reference:C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0__31bf3856ad364e35\system.management.automation.dll /out:c:\setup\powerless.exe c:\scripts\powersless.cs
請記住,具體的執(zhí)行路徑需要取決于目標(biāo)系統(tǒng)中所安裝的框架版本。除此之外,別忘了添加對“system.management.automation.dll”程序集的引用。
如果一切正常的話,我們就已經(jīng)完成了代碼的編譯。接下來,創(chuàng)建一個簡單地測試腳本:
test.ps1:echo "Hello from powershell-less"echo "PID: $pid"
然后運行該腳本:
上述內(nèi)容就是PowerShell中怎么繞過訪問限制,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)頁題目:PowerShell中怎么繞過訪問限制
網(wǎng)站網(wǎng)址:http://m.newbst.com/article44/ijseee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機、用戶體驗、營銷型網(wǎng)站建設(shè)、移動網(wǎng)站建設(shè)、Google、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)