对象基础
在PowerShell中,一切皆为对象。对象是一个特定模板(称为类)的独立实例。类规定了对象将包含的内容类型,决定了其方法(即可以对该对象执行的操作)。
当直接调用一个变量时,返回的是其最直观的值。
$fileName = "myDocument.txt"
$fileName
这行代码会直接输出字符串 myDocument.txt。
要深入了解一个对象的能力,需要使用 Get-Member。它能列出对象的所有属性和方法。
$fileName | Get-Member
或者使用 -InputObject 参数:
Get-Member -InputObject $fileName
这会显示 System.String 类型的所有成员,例如 Length 属性和 Substring()、Replace() 等方法。
访问对象属性
使用点符号可以访问对象的属性,这可以获取对象的特定数据。
$fileName.Length
这行代码会输出数字 15,因为它计算了字符串 "myDocument.txt" 包含的字符总数。
调用对象方法
方法代表对象可以执行的动作,调用时需要在方法名后加上括号,括号内可以传递参数。
$fileName.ToUpper()
这行代码会返回一个新的字符串 "MYDOCUMENT.TXT",它将所有字母转换为大写。注意,原始字符串对象本身并未被修改。
$newName = $fileName.Replace("my", "our")
$newName
这里我们调用了 Replace() 方法,它将 "my" 替换为 "our",并将返回的新字符串 "ourDocument.txt" 赋值给了 $newName 变量。
创建自定义对象
当内置对象类型不能满足需求时,可以创建自定义的 PSCustomObject。一种简洁的方法是使用哈希表并进行类型转换。
$serverInfo = [PSCustomObject]@{
Name = "SRV-DB01";
IP = "192.168.1.100";
Status = "Online"
}
创建后,可以像访问任何对象属性一样访问自定义属性。
$serverInfo.Name
$serverInfo.Status
这会分别输出 "SRV-DB01" 和 "Online"。
通过 Get-Member 查看此对象,会发现其类型为 PSCustomObject,并拥有自定义的三个成员。
> Get-Member -InputObject $serverInfo
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
IP NoteProperty string IP=192.168.1.100
Name NoteProperty string Name=SRV-DB01
Status NoteProperty string Status=Online