自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

PowerShell與.NET框架之間的點(diǎn)連接

系統(tǒng) Windows
Windows PowerShell最好的功能之一就是它對(duì).NET對(duì)象模式的直接訪問。但是由于作者不是一個(gè)開發(fā)人員,并且大部分編成概念都十分陌生,也就成為了學(xué)習(xí)Powershell時(shí)最大的障礙。在本文中就是在實(shí)際學(xué)習(xí)中總結(jié)出Powershell與.Net框架之間點(diǎn)連接的學(xué)習(xí)經(jīng)驗(yàn)。

Windows PowerShell***的功能之一就是它對(duì).NET對(duì)象模式的直接訪問。不幸的是,由于我不是開發(fā)人員,且大部分編程概念對(duì)我來說也很陌生,這是我在學(xué)習(xí)PowerShell時(shí)***的障礙。

在我最初用PowerShell工作時(shí),我不知道類別、端口、構(gòu)造或成員的不同,對(duì)對(duì)象的概念(來自一個(gè)程序員的觀點(diǎn))也不是真得了解。但我確實(shí)認(rèn)為這些概念對(duì)學(xué)習(xí)和使用有Windows PowerShell的.NET很重要。我還發(fā)現(xiàn),了解一些C#(或至少能讀懂它)也非常有幫助。

因此,我將試著通過舉例來簡(jiǎn)短地解釋下這些概念并在這個(gè)過程中提供一些代碼來幫助你。我還會(huì)試著(用我有限的能力)來提供一些C# PowerShell轉(zhuǎn)換的基本指導(dǎo)。

讓我們從定義開始。此外,如果你是一個(gè)開發(fā)人員,對(duì)于我接下來說的所有事情都請(qǐng)隨意發(fā)表意見。這些定義都是我對(duì)于這些概念推導(dǎo)出來的意見。

.NET:它是有黑箱代碼的架構(gòu),這些代碼接受特定的輸入并返回一個(gè)值或?qū)ο??;旧?,微軟為你完成了所有編碼——你只須要正確調(diào)用它。MSDN是.NET架構(gòu)的無價(jià)資源。

類別(Class):我在.NET中提及的幾乎所有事情都是一個(gè)類別。我傾向于認(rèn)為一個(gè)類別是一個(gè)樣板,示范對(duì)象應(yīng)該是什么樣子和它應(yīng)該有什么特性和類函數(shù)。舉例來說,一個(gè)Microsoft.Win32.RegistryKey對(duì)象應(yīng)該有命名特性和GetValue方法。

成員(Member):每個(gè)類別都有成員,它們是連結(jié)起來的特性和類函數(shù)。如果你只想看看一個(gè)類別必須提供物的概況,這會(huì)是個(gè)好地方。

特性(Property):特性是類別兩類成員之一。簡(jiǎn)言之,可以認(rèn)為它們是對(duì)象的屬性。舉例來說,Microsoft.Win32.RegistryKey類別有Name、SubKeyCount和Value Count等特性,所以每個(gè)Microsoft.Win32.RegistryKey對(duì)象都能有這些特性。

類函數(shù)(Method):類函數(shù)是類別兩類成員之一。和特性一樣,類函數(shù)也由類別限制,但是和屬性相反,它們更像類別的功能。Microsoft.Win32.RegistryKey類別有CreateSubKey、DeleteSubkey、SetValue等類函數(shù)。和特性一樣,每個(gè)Microsoft.Win32.RegistryKey對(duì)象都能有這些類函數(shù)。

構(gòu)造函數(shù)(Constructor):構(gòu)造函數(shù)是類別的一個(gè)類函數(shù),它收集創(chuàng)建一個(gè)類別實(shí)例所需的信息。我更喜歡將構(gòu)造定義為使對(duì)象有用所需的信息或?qū)ο?。用System.Data.SqlClient.SqlCommand來舉例,有四個(gè)不同方法可以讓你從該類中創(chuàng)建一個(gè)對(duì)象。每一方法創(chuàng)建出的對(duì)象都有些微不同的數(shù)據(jù)。

靜態(tài)域(Static field):它們和特性相似,但無須創(chuàng)建對(duì)象實(shí)例就可以獲得。在PowerShell中,訪問靜態(tài)成員確實(shí)簡(jiǎn)單。你所要做的就是運(yùn)用

[.NET Class]::StaticField。

在接下來的例子中,.NET類別System.Math會(huì)返回PI值:

[System.Math]::PI.

靜態(tài)類函數(shù)(Static method):它們就像類函數(shù),但無須創(chuàng)建對(duì)象實(shí)例就可獲得。和你訪問靜態(tài)域的方式相似,你只須運(yùn)用[.NET Class]::StaticMethods。

接下來的例子中,Microsoft.Win32.RegistryKey將為一個(gè)叫做MyServer的遠(yuǎn)程機(jī)返回Microsoft.Win32.RegistryKey對(duì)象。

[Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine,”MyServer”)

現(xiàn)在我們已經(jīng)涵蓋了基本的.NET框架,讓我們?cè)敿?xì)檢查下某些PowerShell特性,如創(chuàng)建類別并發(fā)現(xiàn)這些類別可得到哪些特性和類函數(shù)。

新對(duì)象(New-Object),創(chuàng)建微軟.NET框架或COM對(duì)象的實(shí)例。

接下來的例子中我會(huì)創(chuàng)建一個(gè)System.DirectoryServices.ActiveDirectory.DirectoryContext實(shí)例:

$Context = new-object System.DirectoryServices.ActiveDirectory.DirectoryContext("DirectoryServer",$Name)

獲取成員(Get-Member),訪問對(duì)象的特性和類函數(shù)。

接下來的例子將返回$Context對(duì)象的所有成員:

$Context | Get-Member

收集所有.NET問題

以下是工作中的.NET實(shí)例。它運(yùn)用新對(duì)象、構(gòu)造函數(shù)和靜態(tài)類函數(shù)返回活動(dòng)目錄域控制器對(duì)象。

function Get-DC
{
Param($Name,$Domain)
if($Name)
{
$Context = new-object
System.DirectoryServices.
ActiveDirectory.DirectoryContext

("DirectoryServer",$Name)

[System.DirectoryServices.

ActiveDirectory.DomainController]

::GetDomainController($Context)

}

if($Domain)

{

$Context = new-object

System.DirectoryServices.

ActiveDirectory.DirectoryContext

("Domain",$Domain)

[System.DirectoryServices.ActiveDirectory.

DomainController]::FindAll($Context)

}

if(!$Name -and !$Domain)

{

$DCName = ([adsi]"LDAP://rootDSE")

.dnsHostname.ToString()

$Context = new-object

System.DirectoryServices.ActiveDirectory.

DirectoryContext("DirectoryServer",$DCName)

[System.DirectoryServices.ActiveDirectory.

DomainController]::GetDomainController($Context)

}

}

【編輯推薦】

  1. WMI中的Windows PowerShell腳本使用方法
  2. 有關(guān)PowerShell腳本你必須知道的十個(gè)基本概念
  3. PowerShell與Unix Shell對(duì)比:八大實(shí)例
  4. 教你如何個(gè)性化PowerShell環(huán)境
責(zé)任編輯:張浩 來源: TT中國(guó)
相關(guān)推薦

2023-05-23 07:06:05

PythonPowerShell

2024-06-18 13:17:02

數(shù)據(jù)庫(kù)框架

2012-09-20 10:30:07

Linuxtty框架uart框架

2009-12-29 14:55:31

ADO.NET Dat

2013-02-21 17:54:12

PowerShell入PowerShell命

2009-12-02 09:07:45

ASP.NET 4.0

2009-08-28 15:35:31

C#與VB.net

2009-08-21 17:16:19

.NET框架與COM

2009-08-21 16:55:10

.NET框架與XML

2013-02-18 08:34:45

powershell

2024-12-04 08:17:49

日志框架NLog

2009-03-13 10:58:48

ASP.NetMVC框架編程

2011-04-20 10:02:22

PowerShell

2010-09-17 09:24:30

PowerShellSSH

2009-11-11 14:34:14

VB.NET動(dòng)態(tài)連接庫(kù)

2010-08-11 13:01:09

Flex.NETSocket

2009-07-20 15:51:40

FubuMVC核心框架ASP.NET MVC

2010-01-14 14:30:09

VB.NET匿名類型

2010-06-01 14:42:55

連接MySQL數(shù)據(jù)庫(kù)

2013-11-07 15:55:29

PowerShellVDI
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)