亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PowerShell > 正文

Windows Powershell創建對象

2020-10-29 21:02:19
字體:
來源:轉載
供稿:網友

通過New-Object創建新對象

如果使用構造函數創建一個指定類型的實例對象,該類型必須至少包含一個簽名相匹配的構造函數。例如可以通過字符和數字創建一個包含指定個數字符的字符串:

復制代碼 代碼如下:

PS C:Powershell> New-Object String(‘*',100)

*******************************************************************************
*********************

為什么支持上面的方法,原因是String類中包含一個Void .ctor(Char, Int32) 構造函數

復制代碼 代碼如下:

PS C:Powershell> [String].GetConstructors() | foreach {$_.tostring()}
Void .ctor(Char*)
Void .ctor(Char*, Int32, Int32)
Void .ctor(SByte*)
Void .ctor(SByte*, Int32, Int32)
Void .ctor(SByte*, Int32, Int32, System.Text.Encoding)
Void .ctor(Char[], Int32, Int32)
Void .ctor(Char[])
Void .ctor(Char, Int32)

通過類型轉換創建對象

通過類型轉換可以替代New-Object

復制代碼 代碼如下:

PS C:Powershell> $date="1999-9-1 10:23:44"
PS C:Powershell> $date.GetType().fullName
System.String
PS C:Powershell> $date
1999-9-1 10:23:44
PS C:Powershell> [DateTime]$date="1999-9-1 10:23:44"
PS C:Powershell> $date.GetType().FullName
System.DateTime
PS C:Powershell> $date

1999年9月1日 10:23:44

如果條件允許,也可以直接將對象轉換成數組

復制代碼 代碼如下:

PS C:Powershell> [char[]]"mossfly.com"
m
o
s
s
f
l
y
.
c
o
m
PS C:Powershell> [int[]][char[]]"mossfly.com"
109
111
115
115
102
108
121
46
99
111
109

加載程序集

自定義一個簡單的C#類庫編譯為Test.dll:

復制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;

namespace Test
{
    public class Student
    {
        public string Name { set; get; }
        public int Age { set; get; }
        public Student(string name, int age)
        {
            this.Name = name;
            this.Age = age;
        }
        public override string  ToString()
        {
            return string.Format("Name={0};Age={1}", this.Name,this.Age);
        }
    }
}

在Powershell中加載這個dll并使用其中的Student類的構造函數生成一個實例,最后調用ToString()方法。

復制代碼 代碼如下:

PS C:Powershell> ls .Test.dll

    目錄: C:Powershell

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---         2012/1/13     10:49       4608 Test.dll

PS C:Powershell> $TestDLL=ls .Test.dll
PS C:Powershell> [reflection.assembly]::LoadFile($TestDLL.FullName)

GAC    Version        Location
---    -------        --------
False  v2.0.50727     C:PowershellTest.dll

PS C:Powershell> $stu=New-Object Test.Student('Mosser',22)
PS C:Powershell> $stu

Name                                                                        Age
----                                                                        ---
Mosser                                                                       22

PS C:Powershell> $stu.ToString()
Name=Mosser;Age=22

使用COM對象

作為.NET的補充,Powershell可以加載和訪問COM對象。

查看可用的COM對象

每一個COM對象都有存儲在注冊表中的唯一標識符,想遍歷訪問可用的COM對象,可是直接訪問注冊表。

復制代碼 代碼如下:

Dir REGISTRY::HKEY_CLASSES_ROOTCLSID  -include PROGID -recurse | foreach {$_.GetValue("")}
DAO.DBEngine.36
DAO.PrivateDBEngine.36
DAO.TableDef.36
DAO.Field.36
DAO.Index.36
PS C:Powershell> Dir REGISTRY::HKEY_CLASSES_ROOTCLSID -include PROGID -recurse
| foreach {$_.GetValue("")} | select -First 10
DAO.DBEngine.36
DAO.PrivateDBEngine.36
DAO.TableDef.36
DAO.Field.36
DAO.Index.36
DAO.Group.36
DAO.User.36
DAO.QueryDef.36
DAO.Relation.36
file
......

怎樣使用COM對象

一旦得到了COM對象的ProgID,就可以使用New-Object創建COM對象,只需要指定參數為-comObject。

復制代碼 代碼如下:

PS C:Powershell> New-Object -ComObject DAO.Relation.36

Properties     : System.__ComObject
Name           :
Table          :
ForeignTable   :
Attributes     : 0
Fields         : System.__ComObject
PartialReplica :
COM對象的和.NET對象相似,任然可是使用Get-Member 得到該對象的所有熟悉和方法:

PS C:Powershell> $DBEng=New-Object -ComObject DAO.PrivateDBEngine.36
PS C:Powershell> $DBEng | Get-Member -me *method

   TypeName: System.__ComObject#{00000021-0000-0010-8000-00aa006d2ea4}

Name                MemberType Definition
----                ---------- ----------
BeginTrans          Method     void BeginTrans ()
CommitTrans         Method     void CommitTrans (int)
CompactDatabase     Method     void CompactDatabase (string, string, Variant...
CreateDatabase      Method     Database CreateDatabase (string, string, Vari...
CreateWorkspace     Method     Workspace CreateWorkspace (string, string, st...
FreeLocks           Method     void FreeLocks ()
Idle                Method     void Idle (Variant)
ISAMStats           Method     int ISAMStats (int, Variant)
OpenConnection      Method     Connection OpenConnection (string, Variant, V...
OpenDatabase        Method     Database OpenDatabase (string, Variant, Varia...
RegisterDatabase    Method     void RegisterDatabase (string, string, bool, ...
RepairDatabase      Method     void RepairDatabase (string)
Rollback            Method     void Rollback ()
SetDataAccessOption Method     void SetDataAccessOption (short, Variant)
SetDefaultWorkspace Method     void SetDefaultWorkspace (string, string)
SetOption           Method     void SetOption (int, Variant)
_30_CreateWorkspace Method     Workspace _30_CreateWorkspace (string, string...

PS C:Powershell> $DBEng | Get-Member -me *property

   TypeName: System.__ComObject#{00000021-0000-0010-8000-00aa006d2ea4}

Name            MemberType Definition
----            ---------- ----------
DefaultPassword Property   string DefaultPassword () {set}
DefaultType     Property   int DefaultType () {get} {set}
DefaultUser     Property   string DefaultUser () {set}
Errors          Property   Errors Errors () {get}
IniPath         Property   string IniPath () {get} {set}
LoginTimeout    Property   short LoginTimeout () {get} {set}
Properties      Property   Properties Properties () {get}
SystemDB        Property   string SystemDB () {get} {set}
Version         Property   string Version () {get}
Workspaces      Property   Workspaces Workspaces () {get}

常用的COM對象中有

WScript.Shell,
WScript.Network,
Scripting.FileSystemObject,
InternetExplorer.Application,
Word.Application,
Shell.Application

下面的例子使用WScript.shell COM對象和它的方法CreateShortcut()做桌面上創建一個Powershell快捷方式:

復制代碼 代碼如下:

PS C:Powershell> $wshell=New-Object -ComObject WScript.shell
PS C:Powershell> $path=[environment]::GetFolderPath('Desktop')
PS C:Powershell> $link=$wshell.CreateShortcut("$pathPowershell.lnk")
PS C:Powershell> $link | Get-Member

   TypeName: System.__ComObject#{f935dc23-1cf0-11d0-adb9-00c04fd58a0b}

Name             MemberType Definition
----             ---------- ----------
Load             Method     void Load (string)
Save             Method     void Save ()
Arguments        Property   string Arguments () {get} {set}
Description      Property   string Description () {get} {set}
FullName         Property   string FullName () {get}
Hotkey           Property   string Hotkey () {get} {set}
IconLocation     Property   string IconLocation () {get} {set}
RelativePath     Property   string RelativePath () {set}
TargetPath       Property   string TargetPath () {get} {set}
WindowStyle      Property   int WindowStyle () {get} {set}
WorkingDirectory Property   string WorkingDirectory () {get} {set}

PS C:Powershell> $link.TargetPath='Powershell.exe'
PS C:Powershell> $link.Description="啟動Powershell"
PS C:Powershell> $link.WorkingDirectory=$PROFILE
PS C:Powershell> $link.IconLocation='Powershell.exe'
PS C:Powershell> $link.Save()

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品免费久久久久久久久| 欧美极品欧美精品欧美视频| 精品日本美女福利在线观看| 亚洲一区二区自拍| 色综合久久精品亚洲国产| 亚洲午夜av久久乱码| 久久777国产线看观看精品| 日韩网站在线观看| 色综合视频网站| 国产亚洲精品美女久久久| 日韩av大片免费看| 国产精品吹潮在线观看| 中文字幕亚洲一区在线观看| 国产日产亚洲精品| 亚洲午夜久久久影院| yellow中文字幕久久| 欧美激情第一页xxx| 97精品国产97久久久久久春色| 日韩av免费网站| 国产精品1234| 精品久久久一区二区| 狠狠色狠色综合曰曰| 狠狠做深爱婷婷久久综合一区| 亚洲美女久久久| 日本午夜精品理论片a级appf发布| 18性欧美xxxⅹ性满足| 超碰日本道色综合久久综合| 亚洲欧洲偷拍精品| 精品视频9999| 色婷婷av一区二区三区在线观看| 狠狠躁夜夜躁久久躁别揉| 亚洲欧美激情一区| 一区二区三区无码高清视频| 久99九色视频在线观看| 97国产suv精品一区二区62| 久久福利视频导航| 国产成人鲁鲁免费视频a| 萌白酱国产一区二区| 性欧美xxxx视频在线观看| 欧美在线观看一区二区三区| 国产精品视频在线播放| 日韩亚洲欧美成人| 亚洲欧洲在线观看| 日韩av电影在线免费播放| 国产精品爽爽爽爽爽爽在线观看| 久久福利视频导航| 精品视频9999| 中文字幕日韩视频| 亚洲成人av资源网| 亚洲精品国产精品国自产观看浪潮| 欧美激情一区二区三区在线视频观看| 人体精品一二三区| 欧美裸体xxxx极品少妇| 日韩中文字幕视频在线| 国产欧美日韩亚洲精品| 另类天堂视频在线观看| 亚洲视频网站在线观看| 日本人成精品视频在线| 在线激情影院一区| 欧美日在线观看| 久久精品欧美视频| 555www成人网| 国内精品久久影院| 91av在线免费观看| 国产精品免费在线免费| 欧美性高跟鞋xxxxhd| 久久久免费精品视频| 一区二区三区日韩在线| 精品在线观看国产| 蜜臀久久99精品久久久久久宅男| 久久久久久亚洲精品| 久久中文精品视频| 久久电影一区二区| 久久精品国产亚洲精品| 久久精品国产96久久久香蕉| 精品少妇v888av| 国产精品三级久久久久久电影| 中文字幕亚洲一区二区三区| 欧美性猛交xxxx乱大交极品| 欧美激情欧美激情在线五月| 一本色道久久综合亚洲精品小说| 日韩毛片在线看| 欧美在线激情视频| 国产精品欧美亚洲777777| 91久久在线视频| 韩国一区二区电影| 欧美激情亚洲一区| 亚洲va欧美va在线观看| 久久久精品影院| 亚洲精品久久久久久久久| 国产午夜精品理论片a级探花| 午夜美女久久久久爽久久| 色噜噜狠狠狠综合曰曰曰| 美女精品久久久| 欧美午夜影院在线视频| 午夜精品一区二区三区av| 97高清免费视频| 国产精品一区二区久久国产| 久久综合色影院| 国产精品成人免费电影| 亚洲新中文字幕| 亚洲无线码在线一区观看| 国产欧美日韩丝袜精品一区| 国产精品丝袜白浆摸在线| 成人av在线网址| 欧美日韩中文在线观看| 国产精品一区二区三| 亚洲国产古装精品网站| 亚洲一区二区自拍| 欧美激情a∨在线视频播放| 国产精品激情av在线播放| 午夜精品www| 狠狠躁夜夜躁人人爽超碰91| 日本乱人伦a精品| 亚洲风情亚aⅴ在线发布| 永久免费毛片在线播放不卡| 91国自产精品中文字幕亚洲| 色噜噜狠狠狠综合曰曰曰| 久久久国产精品x99av| 日韩欧美在线视频日韩欧美在线视频| 91在线视频免费| 欧美在线视频免费| 都市激情亚洲色图| 亚洲精品一区中文字幕乱码| 国产一区二区日韩精品欧美精品| 国产精品福利在线观看网址| 亚洲天天在线日亚洲洲精| 久久久久久久999| 97碰碰碰免费色视频| 欧美午夜精品在线| 国产精品一区二区三区久久久| 日本最新高清不卡中文字幕| 91tv亚洲精品香蕉国产一区7ujn| 亚洲精品国产免费| 国产一区二区三区日韩欧美| 国产一区二区免费| 精品国产91乱高清在线观看| 黄网站色欧美视频| 日韩女优在线播放| 日韩电影中文字幕一区| 97国产真实伦对白精彩视频8| 亚洲国产黄色片| 久久久久久久久久久成人| 欧美激情一区二区三级高清视频| 亚洲理论片在线观看| 亚洲在线免费观看| 欧美一区二区三区免费观看| 色婷婷久久一区二区| 久久精品中文字幕一区| 日韩电影免费在线观看| 亚洲区免费影片| 国产精品成av人在线视午夜片| 亚洲欧美成人精品| 日本中文字幕久久看| 国产在线观看精品一区二区三区| 狠狠躁夜夜躁人人躁婷婷91| 中文字幕一精品亚洲无线一区| 日韩日本欧美亚洲| 亚洲精品一区二区三区婷婷月| 欧美野外wwwxxx| 亚洲欧美另类人妖| 全色精品综合影院| 黄色一区二区在线| 欧美日韩国产一中文字不卡|