New-Object 帮助信息

本文介绍 PowerShell 中 New-Object 命令的使用方法,包括创建 .Net 和 COM 对象实例的基本语法及参数说明,并通过具体示例展示如何在脚本中应用这些对象。
如下说明是翻译PowerShell: help New-Object 产生的帮助信息.
译者: Edengundam(马涛)
 
New-Object
 
大纲
创建一个.NetCOM对象的实例.
 
语法
New-Object [-typeName] <string> [[-argumentList] <Object[]>] [<CommonParameters>]
 
New-Object [-comObject] <string> [-strict] [<CommonParameters>]
 
详细描述
创建一个.NetCOM对象的实例. 你指定.Net类的类型或一个COM对象的Programmatic Identifier(ProgID). 默认情况下, 你键入.Net的完全限定名, cmdlet返回该类实例的一个引用. 要创建一个COM对象的实例, 使用ComObject参数并将对象的ProgID作为参数值.
 
参数
 
-typeName <string>
指定.Net类的完全限定名. 你不能同时指定TypeName参数和ComObject参数.
 
强制参数?
true
参数位置?
1
默认值
 
允许从管道绑定输入?
false
允许通配符扩展?
false
 
-argumentList <Object[]>
.Net类的构造器指定参数列表. 使用逗号(,)隔离列表中的元素.
 
强制参数?
false
参数位置?
2
默认值
 
允许从管道绑定输入?
false
允许通配符扩展?
false
 
-comObject <string>
COM对象的Programmatic Identifier (ProgID).
 
强制参数?
true
参数位置?
1
默认值
 
允许从管道绑定输入?
false
允许通配符扩展?
false
 
-strict <SwitchParameter>
指定如果你试图创建的COM对象使用了互操作程序集, 应该给出错误. 这使得您能够区分实际的COM对象和COM可调用包装的.Net对象.
 
强制参数?
false
参数位置?
named
默认值
false
允许从管道绑定输入?
false
允许通配符扩展?
false
 
<公共参数>
此命令支持公共参数: -Verbose, -Debug, -ErrorAction, -ErrorVariable, and -OutVariable. 更多信息, 输入, "get-help about_commonparameters".
 
返回类型
Object
 
注意
 
New-Object提供了VBScript中最频繁使用的CreateObject函数的功能. VBScript中类似语句Set objShell = CreateObject("Shell.Application")可以被转化为Windows PowerShell 中的$objShell = new-object -comobject "Shell.Application".
 
New-Object允许您在命令行和脚本中更容易的使用.Net对象, 从而扩展了Windows Script Host环境的可用性.
 
更多信息, 输入"Get-Help New-Object  -detailed".需要技术信息, 输入"Get-Help New-Object -full".
 
如果需要为该命令提供多个参数, 请使用逗号进行分隔. 例如, "<parameter-name> <value1>, <value2>".
 
1
 
C:/PS>$ver = new-object -typename System.Version -argumentlist "1.2.3.4"
$ver | get-member
 
此命令创建了一个类型为System.Version.Net对象, 使用字符串"1.2.3.4"作为构造方法的参数. 它将该对象的引用保存在$ver变量中, 并将其通过管道发送给Get-Member cmdlet来显示该引用对象的属性和方法.
 
2
 
C:/PS>$ie = new-object -comobject InternetExplorer.Application
$ie.navigate2("www.microsoft.com")
$ie.visible = $true
 
此命令创建一个COM对象的实例用来表示Internet Explorer应用程序. 它是用对象来浏览网站, 接下来设置可见性属性为$true使得应用程序可见.
 
3
 
C:/PS>$a=new-object -comobject Word.Application -strict
$a.visible=$true
 
此命令展示了指定Strict参数, 当创建COM对象使用了互操作程序集, 将会引起new-object生成非终止错误.
 
New-Object : 被输入到管道中的对象是来自主要互操作程序集中的组件"Microsoft.Office.Interop.Word.ApplicationClass"类型的实例. 如果这个类型提供了与Idispatch成员不同的成员, 主要互操作程序集没有安装, 此对象进行交互的脚本可能不能工作.
 
At line:1 char:14
+ $a=New-Object  <<<< -COM Word.Application -Strict; $a.visible=$true
 
4
 
C:/PS>$objshell = new-object -comobject "Shell.Application"
$objshell | get-member
$objshell.ToggleDesktop()
 
命令使用ComObject参数创建ProgID"Shell.Application"COM对象. 他将引用到对象的结果存储在$objShell变量中, 并将此变量通过管道发送给Get-Member cmdlet. Get-Member cmdlet显示COM对象的属性和方法. 最后一行, 对象的ToggleDesktop方法被调用. 他将最小化所有在你的桌面上打开的窗口.
 
相关链接
Compare-Object
Select-Object
Sort-Object
ForEach-Object
Group-Object
Measure-Object
Tee-Object
Where-Object
 
<think>我们正在讨论的是PowerShell中如何简化`New-Object`命令的问题。用户询问是否可以用类似`ne`这样的简短别名来代替`New-Object`。 在PowerShell中,我们可以通过创建别名(alias)来简化命令。别名允许我们为常用的命令创建简短的替代名称。 具体步骤如下: 1. 使用`Set-Alias`命令创建别名,将`ne`设置为`New-Object`的别名。 2. 但是需要注意的是,别名只在当前会话中有效。如果希望永久生效,需要将别名设置添加到PowerShell配置文件中。 示例: ```powershell # 在当前会话中设置别名 Set-Alias -Name ne -Value New-Object ``` 之后,就可以使用`ne`来代替`New-Object`,例如: ```powershell # 使用别名创建对象 $btn = ne Windows.Forms.Button ``` 然而,需要注意的是: - 别名不能包含破折号(-),因为PowerShell的别名是一个单词。所以`ne`是可行的,但如果我们想简化成`new-object`的缩写形式,只能是单个词。 - 别名可能会与现有命令冲突,所以在设置前最好检查一下。 永久设置别名的方法: 1. 打开PowerShell配置文件(例如:`$PROFILE`)。 2. 在配置文件中添加:`Set-Alias ne New-Object` 3. 保存并重新加载配置文件(或者重启PowerShell)。 另外,PowerShell已经内置了一些别名,例如`%`是`ForEach-Object`的别名,`?`是`Where-Object`的别名。我们可以通过`Get-Alias`查看所有别名。 但是,使用过于简短的别名可能会降低脚本的可读性,尤其是在共享脚本时。因此,在个人使用中可以方便,但在团队项目中建议谨慎使用。 根据引用[1]中提到的PowerShell对COM对象的支持,我们可以联想到,如果用户经常使用`New-Object`来创建COM对象(如`New-Object -ComObject Excel.Application`),那么设置别名可以大大提高效率。 另外,引用[3]中提到了在SharePoint操作中使用PowerShell,其中也有`New-Object`的使用,所以简化命令对于频繁操作是有意义的。 最后,我们可以生成一些相关问题,以帮助用户扩展理解。 §§相关问题§§ 1. 如何在PowerShell中创建永久性的别名? 2. 如何查看PowerShell中已有的别名? 3. PowerShell中如何为带有参数的命令设置别名? 4. 使用别名有哪些注意事项? </think>在 PowerShell 中,可以通过 **自定义别名** 或 **函数封装** 的方式将 `New-Object` 简化为类似 `ne` 的短命令。以下是具体实现方法: --- ### 方法一:创建永久别名(推荐) 1. **打开 PowerShell 配置文件** ```powershell notepad $PROFILE # 首次使用需先执行: New-Item $PROFILE -Type File ``` 2. **添加别名定义** 在配置文件中插入: ```powershell Set-Alias ne New-Object ``` 3. **重启 PowerShell** 即可使用新别名: ```powershell $btn = ne Windows.Forms.Button # 替代 New-Object Windows.Forms.Button ``` --- ### 方法二:创建带参数的函数 若要支持 `-ComObject` 等参数: ```powershell function ne { param( [Parameter(Mandatory=$true)] [string]$TypeName, [switch]$ComObject ) if ($ComObject) { New-Object -ComObject $TypeName } else { New-Object -TypeName $TypeName } } # 使用示例 $excel = ne Excel.Application -ComObject # 创建 COM 对象[^1] $datetime = ne System.DateTime # 创建 .NET 对象 ``` --- ### ⚠️ 注意事项 1. **作用域限制** 函数/别名仅在当前会话有效,永久生效需保存到 `$PROFILE` 2. **避免冲突** 检查是否已存在 `ne` 命令: ```powershell Get-Command ne -ErrorAction SilentlyContinue ``` 3. **日志安全** 敏感操作后建议清理日志[^2]: ```powershell wevtutil cl "Windows PowerShell" ``` --- ### 应用场景示例 ```powershell # SharePoint 列表操作 (参考引用[3]) $SPweb = ne Microsoft.SharePoint.SPWeb "https://sharepoint.site" $list = $SPweb.Lists["Documents"] ``` --- ### 相关问题 1. 如何在 PowerShell 中为复杂命令创建带默认参数的别名? 2. PowerShell 配置文件 (`$PROFILE`) 有哪些加载优先级规则? 3. 如何在不同计算机间同步 PowerShell 自定义配置? 4. 使用短别名是否会影响 PowerShell 脚本的可维护性?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值