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

首頁 > 開發 > PowerShell > 正文

Windows Powershell創建對象

2020-03-26 19:15:52
字體:
來源:轉載
供稿:網友

通過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
国产亚洲精品久久久久久777| 亚洲天堂免费视频| 日本一欧美一欧美一亚洲视频| 日韩视频一区在线| 26uuu亚洲伊人春色| 欧美成人午夜激情在线| 日韩高清中文字幕| www.久久久久久.com| 久久国产加勒比精品无码| 日韩av不卡电影| 97在线看福利| 亚洲电影天堂av| 国产成人精彩在线视频九色| 精品国产拍在线观看| 色综合男人天堂| 亚洲韩国日本中文字幕| 亚洲人成77777在线观看网| 日本久久中文字幕| 92福利视频午夜1000合集在线观看| 国产精品一区二区女厕厕| 国产精品视频区| 久久久视频免费观看| 亚洲国产日韩一区| 国内精品小视频| 久久在线免费视频| 日韩精品免费看| 91av在线国产| 国产精品老牛影院在线观看| 精品久久久香蕉免费精品视频| 疯狂欧美牲乱大交777| 久久久免费观看| 国产精品91一区| 亚洲色图偷窥自拍| 国产91成人video| 在线观看国产成人av片| 成人激情视频在线| 欧美亚洲视频在线看网址| 亚洲在线视频观看| 一级做a爰片久久毛片美女图片| 亚洲美女免费精品视频在线观看| 欧美一级成年大片在线观看| 亚洲国产精品美女| 国产在线精品一区免费香蕉| 精品亚洲精品福利线在观看| 久久久久久久久电影| 日韩一区二区福利| 国产精品福利在线观看| 欧美尤物巨大精品爽| 亚洲天堂av在线免费| 日韩欧美精品免费在线| 久操成人在线视频| 日韩禁在线播放| 日韩av不卡在线| 97碰在线观看| 欧美视频一二三| 欧美第一页在线| 日韩日本欧美亚洲| 欧美第一黄色网| 96精品久久久久中文字幕| 亚洲综合精品一区二区| 久久成人人人人精品欧| 国产欧美日韩91| 亚洲成年人影院在线| 国产成人在线亚洲欧美| 国产精品美乳一区二区免费| 精品电影在线观看| 欧美性20hd另类| 亚洲国产毛片完整版| 欧美激情视频免费观看| 欧美夫妻性生活视频| 亚洲欧美另类人妖| 一区二区亚洲欧洲国产日韩| 欧美老妇交乱视频| 亚洲女人天堂成人av在线| 中文字幕国产精品久久| 欧美天天综合色影久久精品| 久久精品在线播放| 欧美老女人在线视频| 国产精品视频久| 欧美成人免费视频| 国产精品成人一区二区| 亚洲激情视频在线观看| 亚洲乱码国产乱码精品精| 亚洲国产精品网站| 日韩av手机在线看| 亚洲国产精品悠悠久久琪琪| 国产精品亚洲一区二区三区| 91久久精品日日躁夜夜躁国产| 欧美激情奇米色| 国产91精品网站| 成人免费自拍视频| 中文字幕日韩综合av| 午夜欧美不卡精品aaaaa| 日韩精品在线影院| 亚洲小视频在线观看| 日韩av电影手机在线观看| 欧美日韩国产页| 欧美在线观看www| 久99九色视频在线观看| 国产精品亚洲欧美导航| 日韩精品在线电影| 国产精品视频导航| 精品国产一区二区三区久久久| 国模吧一区二区| 国产精品2018| 国产精品视频内| 欧美一区二区三区精品电影| 在线免费看av不卡| 国产视频亚洲视频| 欧美人在线视频| 亚洲精品一区中文| 日韩中文字幕视频在线观看| 日韩电影视频免费| 欧洲成人性视频| 亚洲欧美日韩在线高清直播| 欧美日韩国产在线播放| 欧美诱惑福利视频| 国模叶桐国产精品一区| 久久久国产精彩视频美女艺术照福利| 在线成人激情视频| 尤物yw午夜国产精品视频明星| 亚洲精品视频免费在线观看| 91在线网站视频| 精品久久中文字幕久久av| 91天堂在线观看| 精品亚洲国产成av人片传媒| 国产精品午夜视频| 亚洲国内精品在线| 国产精品入口尤物| 国产一区二区三区毛片| 91免费视频网站| 国产ts一区二区| 欧美电影免费播放| www.99久久热国产日韩欧美.com| 久久精品亚洲热| 欧美重口另类videos人妖| 国产91热爆ts人妖在线| 91大神在线播放精品| 中文字幕亚洲欧美一区二区三区| 伊是香蕉大人久久| 国产精品福利观看| 欧美第一页在线| 高清欧美一区二区三区| 久久天天躁狠狠躁夜夜av| 国产性色av一区二区| 国产国语videosex另类| 国产精品精品一区二区三区午夜版| 国产亚洲在线播放| 精品国产区一区二区三区在线观看| 国产精品久久久久久久天堂| 日韩欧美在线播放| 精品中文字幕久久久久久| 岛国av午夜精品| 亚洲最新中文字幕| 亚洲qvod图片区电影| 久久久成人的性感天堂| 欧美日韩综合视频| 亚洲一区二区福利| 日本精品一区二区三区在线| 亚洲美女免费精品视频在线观看| 欧美一级视频在线观看| 国产999精品视频| 亚洲欧洲一区二区三区在线观看| 久久精品国产亚洲精品2020|