PowerShell 使用.NetFramework

來源:互聯網
上載者:User

標籤:frame   app   資料   directory   mda   pac   services   console   ionic   

我們都知道,由於PowerShell是基於.NETFramework建立的所以它能夠具備訪問.NET的能力,因為.NET提供了龐大的資料類庫,所以我們可以很好的使用PowerShell去完成一些PowerShell本身還不能完成的功能。 

首先在介紹如何調用.NET 類庫前,我們先簡單的說下.NET 的一些概念,Class,instances以及members是我們這裡著重要說的。 

你一定使用過Get-Process來查看進程的資訊,其實這個命令所產生的物件類型就是System.Diagnostics.Process,也就是我們所說的Class類。 

而instances執行個體就是這個類一些實際運行和發生的說建立的個體,比如我們有20個進程,這20個進程就是我們的執行個體。 

關於member對象,就是某個類的成員,包含了一些屬性,方法,以及它所支援的事件等等。 

那麼在PowerShell中是如何調用.NET類庫的呢?我們以Get-Process為例,它的類其實就是System.Diagnostics.Process,我們在MSDN中搜尋到System.Diagnostics.Process的相關資訊如下:

 

 

我們找到了一個方法GetProcess(),首先看,它是屬於靜態方法。

 

既然是靜態方法,我們就要以靜態方法的方式在PowerShell中調用,在PowerShell中調用靜態方法可以以這種形式執行[Class]::Method(),執行結果如下:

 

PS C:\windows\system32> [System.Diagnostics.Process]::GetProcesses()   Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName -------  ------    -----      ----- -----   ------     -- -----------     106      11      980       4356    24     0.02   1156 svchost     669      25     9900      22044   141     0.78   1600 vmms      27       4     1464       2368    16     0.00   3492 cmd     430      23     4220      11820    93     0.58   1132 spoolsv     630      26    29844      37728   147    40.22   1912 svchost     212      15     6860       9560   108     0.17   1356 IpOverUsbSvc     397      15     2916       6788    36     1.66    700 svchost     272      32    63016     127188   244    29.88    788 dwm    1109     106    98952     166600   454   419.34   2968 BingDict     216      10     1572       6880    82     1.66   2204 rdpclip     400      34   109080     119712   647    13.06   3804 powershell     588      57    54416      54248   777     9.22   2892 mmc     208      11     1596       3864    64     0.53    420 csrss     106      10     3136       7448    41     0.05   1220 svchost     116       8     1212       5600    73     0.00   2732 ChsIME     981      19     4328      11212    40     1.48    592 lsass     393      46    98440     122912   789    15.84   3348 powershell_ise     422      37    12800      33856   205    11.05   3880 iexplore     484      34     8592      11484    59     0.56    764 svchost      80       8      768       3724    45     0.13    496 wininit     220       9     2336       6616    25     1.28    584 services      60       7     1324       5464    71     0.13   3500 conhost     159      12     2496       6792    41     0.19    840 msdtc    1528      50    18136      32384   167    21.89    936 svchost    1376      44    36876      66204   491     1.73   2576 lync     265      18     2020      40028   203    11.06    488 csrss     107       8     1260       5336    56     0.14   1196 Fuel.Service      57       7     3952      10268    63     5.70   2900 conhost      97       9     1360       5692    40     0.03   1460 sqlwriter     301      15     4336      13764   149     0.39    836 msseces

 

 

調用靜態方法十分簡單,那麼如果我們需要建立一個類的執行個體我們又應該怎麼做呢?我們這次拿System.Diagnostics.Eventlog類為例,我們查看下這個類下的構造方法,這個方法接受2個參數,log名以及Machine機器名:

 

知道方法所需要調用的參數後,我們就可以用New-Object命令來建立一個.NET類以及執行個體了。

 

New-Object -TypeName System.Diagnostics.EventLog -ArgumentList ‘Security‘,‘Server1‘

 

 

於ArgumentList參數,它能夠幫你傳遞參數給類的構造器,而.NET可以自動識別你所傳遞給構造器的參數數量和對應資料。

 

最後,如果你想查看當前PowerShell支援載入的.NET集合可以使用如下代碼:

 

PS C:\Windows\system32> [appdomain]::CurrentDomain.GetAssemblies()|%{$_.fullname.split(",")[0]}mscorlibpowershell_iseSystem.Windows.FormsSystemSystem.DrawingSystem.Management.AutomationSystem.CoreMicrosoft.PowerShell.ISECommonMicrosoft.PowerShell.GPowerShellSystem.ComponentModel.CompositionMicrosoft.PowerShell.EditorWindowsBasePresentationFrameworkPresentationCoreSystem.XamlSystem.ConfigurationSystem.XmlSystem.Runtime.SerializationUIAutomationProviderAccessibilityMetadataViewProxies_b9dd7b79-8b1d-4f12-827c-e0f7bb8f29dbSystem.ManagementSystem.DirectoryServicesMicrosoft.Management.InfrastructurePresentationFramework.Aero2PresentationFramework-SystemXmlSystem.DataAnonymously Hosted DynamicMethods AssemblyMicrosoft.PowerShell.SecuritySystem.TransactionsSystem.NumericsMicrosoft.CSharpMicrosoft.PowerShell.GraphicalHostUIAutomationTypesMicrosoft.GeneratedCodePresentationFramework-SystemDataPresentationFramework-SystemCoreWindows.UISystem.Runtime.InteropServices.WindowsRuntimeMicrosoft.PowerShell.Commands.UtilitySystem.Configuration.InstallMicrosoft.PowerShell.ActivitiesSystem.ActivitiesMicrosoft.PowerShell.Workflow.ServiceCoreSystem.Activities.PresentationMicrosoft.PowerShell.Core.ActivitiesMicrosoft.PowerShell.Diagnostics.ActivitiesMicrosoft.PowerShell.Management.ActivitiesMicrosoft.PowerShell.Security.ActivitiesMicrosoft.PowerShell.Utility.ActivitiesMicrosoft.WSMan.Management.ActivitiesSystem.Runtime.DurableInstancingSystem.ServiceModel.InternalsMicrosoft.PowerShell.Commands.ManagementSystem.Xml.LinqPresentationFramework-SystemXmlLinqMicrosoft.PowerShell.Commands.DiagnosticsMicrosoft.PowerShell.ConsoleHostMicrosoft.WSMan.ManagementSystem.EnterpriseServicesSMDiagnosticsMicrosoft.PowerShell.ScheduledJobCarbonSystem.SecurityIonic.ZipSystem.WebMicrosoft.Web.AdministrationCarbon.IisSystem.ServiceProcessSystem.MessagingSystem.DirectoryServices.AccountManagementMicrosoft.Management.Infrastructure.NativeMicrosoft.Management.Infrastructure.UserFilteredExceptionHandlingMicrosoft.CertificateServices.PKIClient.CmdletsSystem.DynamicMicrosoft.VisualBasic.Activities.CompilerMicrosoft.VisualBasicMicrosoft.PowerShell.Cmdletization.GeneratedTypes?C??Windows?system32?WindowsPowerShell?v1.0?Modules?Storage?StorageScripts.psm1Microsoft.PowerShell.PackageManagementMicrosoft.PackageManagementornhs0lkMicrosoft.PackageManagement.MetaProvider.PowerShellMicrosoft.PackageManagement.MsuProviderMicrosoft.PackageManagement.CoreProvidersMicrosoft.PackageManagement.MsiProviderMicrosoft.PackageManagement.ArchiverProvidersMicrosoft.PackageManagement.NuGetProviderSystem.Net.HttpDynamicClassesPSEventHandler

 

 

 

 

 

PowerShell 使用.NetFramework

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.