[玩转系统] 关于对象创建
作者:精品下载站 日期:2024-12-14 02:21:18 浏览:14 分类:玩电脑
关于对象创建
简短描述
解释如何在 PowerShell 中创建对象。
详细描述
您可以在 PowerShell 中创建对象并使用在命令和脚本中创建的对象。
创建对象的方法有很多种,这个列表并不明确:
- New-Object:创建 .NET Framework 对象或 COM 对象的实例。
- Import-Csv/ConvertFrom-CSV:从定义为字符分隔值的项目创建自定义对象 (PSCustomObject)。
- ConvertFrom-Json:创建以 JavaScript 对象表示法 (JSON) 定义的自定义对象。
- ConvertFrom-StringData:创建定义为键值对的自定义对象。
- Add-Type:允许您在 PowerShell 会话中定义一个类,您可以使用
New-Object
实例化该类。 - New-Module:AsCustomObject 参数创建您使用脚本块定义的自定义对象。
- 添加成员:向现有对象添加属性。您可以使用
Add-Member
从简单类型创建自定义对象,例如[System.Int32]
。 - 选择对象:选择对象的属性。您可以使用
Select-Object
在已实例化的对象上创建自定义和计算属性。
本文介绍了以下附加方法:
- 通过使用静态
new()
方法调用类型的构造函数 - 通过类型转换属性名称和属性值的哈希表
静态 new() 方法
所有 .NET 类型都有一个 new()
方法,使您可以更轻松地构造实例。您还可以查看给定类型的所有可用构造函数。
要查看类型的构造函数,请在类型名称后指定 new
方法名称,然后按 <ENTER>
。
[System.Uri]::new
OverloadDefinitions
-------------------
uri new(string uriString)
uri new(string uriString, bool dontEscape)
uri new(uri baseUri, string relativeUri, bool dontEscape)
uri new(string uriString, System.UriKind uriKind)
uri new(uri baseUri, string relativeUri)
uri new(uri baseUri, uri relativeUri)
现在,您可以通过指定适当的构造函数来创建 System.Uri。
[System.Uri]::new("https://www.bing.com")
AbsolutePath : /
AbsoluteUri : https://www.bing.com/
LocalPath : /
Authority : www.bing.com
...
您可以使用以下示例来确定当前加载了哪些 .NET 类型供您实例化。
[AppDomain]::CurrentDomain.GetAssemblies() |
ForEach-Object {
$_.GetExportedTypes() |
ForEach-Object { $_.FullName }
}
使用 new()
方法创建的对象可能与 PowerShell cmdlet 创建的相同类型的对象不具有相同的属性。 PowerShell cmdlet、提供程序和扩展类型系统可以向实例添加额外的属性。
例如,PowerShell 中的 FileSystem 提供程序将六个 NoteProperty 值添加到 Get-Item
返回的 DirectoryInfo 对象中。
$PSDirInfo = Get-Item /
$PSDirInfo | Get-Member | Group-Object MemberType | Select-Object Count, Name
Count Name
----- ----
4 CodeProperty
13 Property
6 NoteProperty
1 ScriptProperty
18 Method
当您直接创建 DirectoryInfo 对象时,它没有这六个 NoteProperty 值。
$NewDirInfo = [System.IO.DirectoryInfo]::new('/')
$NewDirInfo | Get-Member | Group-Object MemberType | Select-Object Count, Name
Count Name
----- ----
4 CodeProperty
13 Property
1 ScriptProperty
18 Method
有关扩展类型系统的更多信息,请参阅 about_Types.ps1xml。
PowerShell 5.0 中添加了此功能
从哈希表创建对象
您可以从属性和属性值的哈希表创建对象。
语法如下:
[<class-name>]@{
<property-name>=<property-value>
<property-name>=<property-value>
}
此方法仅适用于具有无参数构造函数的类。对象属性必须是公共且可设置的。
此功能是在 PowerShell 3.0 版本中添加的
从哈希表创建自定义对象
自定义对象非常有用,并且可以使用哈希表方法轻松创建。 PSCustomObject 类是专门为此目的而设计的。
自定义对象是从函数或脚本返回自定义输出的绝佳方法。这比返回无法重新格式化或通过管道传输到其他命令的格式化输出更有用。
Test-Object 函数
中的命令设置一些变量值,然后使用这些值创建自定义对象。您可以在 Update-Help
cmdlet 帮助主题的示例部分中看到该对象的使用情况。
function Test-Object {
$ModuleName = "PSScheduledJob"
$HelpCulture = "en-us"
$HelpVersion = "3.1.0.0"
[PSCustomObject]@{
"ModuleName"=$ModuleName
"UICulture"=$HelpCulture
"Version"=$HelpVersion
}
$ModuleName = "PSWorkflow"
$HelpCulture = "en-us"
$HelpVersion = "3.0.0.0"
[PSCustomObject]@{
"ModuleName"=$ModuleName
"UICulture"=$HelpCulture
"Version"=$HelpVersion
}
}
Test-Object
该函数的输出是默认格式化为表格的自定义对象的集合。
ModuleName UICulture Version
--------- --------- -------
PSScheduledJob en-us 3.1.0.0
PSWorkflow en-us 3.0.0.0
用户可以像管理标准对象一样管理自定义对象的属性。
(Test-Object).ModuleName
PSScheduledJob
PSWorkflow
PSObject 类型对象按照成员添加到对象的顺序维护成员列表。尽管 Hashtable 对象不能保证键值对的顺序,但将文本哈希表转换为 [pscustomobject]
可以保持顺序。
哈希表必须是文字。如果将哈希表括在括号中或转换包含哈希表的变量,则不能保证顺序被保留。
$hash = @{
Name = "Server30"
System = "Server Core"
PSVersion = "4.0"
}
$Asset = [pscustomobject]$hash
$Asset
System Name PSVersion
------ ---- ---------
Server Core Server30 4.0
从哈希表创建非自定义对象
您还可以使用哈希表为非自定义类创建对象。当您为非自定义类创建对象时,需要命名空间限定的类型名称,尽管您可以省略任何初始的System命名空间组件。
例如,以下命令创建一个会话选项对象。
[System.Management.Automation.Remoting.PSSessionOption]@{
IdleTimeout=43200000
SkipCnCheck=$True
}
哈希表功能的要求,特别是无参数构造函数的要求,消除了许多现有的类。但是,大多数 PowerShell 选项 类以及其他非常有用的类(例如 ProcessStartInfo 类)都被设计为使用此功能。
[System.Diagnostics.ProcessStartInfo]@{
CreateNoWindow="$true"
Verb="run as"
}
Arguments :
ArgumentList : {}
CreateNoWindow : True
EnvironmentVariables : {OneDriveConsumer, PROCESSOR_ARCHITECTURE,
CommonProgramFiles(x86), APPDATA...}
Environment : {[OneDriveConsumer, C:\Users\user1\OneDrive],
[PROCESSOR_ARCHITECTURE, AMD64],
[CommonProgramFiles(x86),
C:\Program Files (x86)\Common Files],
[APPDATA, C:\Users\user1\AppData\Roaming]...}
RedirectStandardInput : False
RedirectStandardOutput : False
RedirectStandardError : False
...
设置参数值时还可以使用哈希表功能。例如,New-PSSession
的 SessionOption 参数的值。 cmdlet 可以是哈希表。
New-PSSession -ComputerName Server01 -SessionOption @{
IdleTimeout=43200000
SkipCnCheck=$True
}
Register-ScheduledJob Name Test -FilePath .\Get-Inventory.ps1 -Trigger @{
Frequency="Daily"
At="15:00"
}
通用对象
您还可以在 PowerShell 中创建通用对象。泛型是类、结构、接口和方法,它们具有用于存储或使用的一种或多种类型的占位符(类型参数)。
以下示例创建一个 Dictionary 对象。
$dict = New-Object 'System.Collections.Generic.Dictionary[String,Int]'
$dict.Add("One", 1)
$dict
Key Value
--- -----
One 1
有关泛型的更多信息,请参阅 .NET 中的泛型。
参见
- about_方法
- about_Objects
- about_管道
- about_属性
- about_Types.ps1xml
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag