通過New-Object創(chuàng)建新對象
如果使用構(gòu)造函數(shù)創(chuàng)建一個(gè)指定類型的實(shí)例對象,該類型必須至少包含一個(gè)簽名相匹配的構(gòu)造函數(shù)。例如可以通過字符和數(shù)字創(chuàng)建一個(gè)包含指定個(gè)數(shù)字符的字符串:
*******************************************************************************
*********************
為什么支持上面的方法,原因是String類中包含一個(gè)Void .ctor(Char, Int32) 構(gòu)造函數(shù)
通過類型轉(zhuǎn)換創(chuàng)建對象
通過類型轉(zhuǎn)換可以替代New-Object
1999年9月1日 10:23:44
如果條件允許,也可以直接將對象轉(zhuǎn)換成數(shù)組
加載程序集
自定義一個(gè)簡單的C#類庫編譯為Test.dll:
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中加載這個(gè)dll并使用其中的Student類的構(gòu)造函數(shù)生成一個(gè)實(shí)例,最后調(diào)用ToString()方法。
目錄: 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的補(bǔ)充,Powershell可以加載和訪問COM對象。
查看可用的COM對象
每一個(gè)COM對象都有存儲(chǔ)在注冊表中的唯一標(biāo)識(shí)符,想遍歷訪問可用的COM對象,可是直接訪問注冊表。
怎樣使用COM對象
一旦得到了COM對象的ProgID,就可以使用New-Object創(chuàng)建COM對象,只需要指定參數(shù)為-comObject。
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()做桌面上創(chuàng)建一個(gè)Powershell快捷方式:
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="啟動(dòng)Powershell"
PS C:Powershell> $link.WorkingDirectory=$PROFILE
PS C:Powershell> $link.IconLocation='Powershell.exe'
PS C:Powershell> $link.Save()
新聞熱點(diǎn)
疑難解答
圖片精選