New-Object 帮助信息

如下说明是翻译 PowerShell : help New-Object 产生的帮助信息 .
译者 : Edengundam( 马涛 )
 
New-Object
 
大纲
创建一个 .Net COM 对象的实例 .
 
语法
New-Object [-typeName] <string> [[-argumentList] <Object[]>] [<CommonParameters>]
 
New-Object [-comObject] <string> [-strict] [<CommonParameters>]
 
详细描述
创建一个 .Net COM 对象的实例 . 你指定 .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和System.Net.Sockets.TcpClient创建TCP客户端。用户已经提供了一些相关的引用内容,我需要结合这些信息来构建一个清晰的回答。 首先,我得回忆一下TcpClient的基本用法。TcpClient类用于创建客户端连接,连接到远程主机。在PowerShell中,使用New-Object可以实例化这个类。用户给的示例中,引用[1]提到了创建TcpClient实例,引用[3]有一个具体的端口扫描脚本,其中使用了TcpClient的Connect方法。这些可以作为参考。 接下来,我需要确保回答结构清晰,分步骤说明。可能需要包括创建实例、连接服务器、发送和接收数据等步骤。同时,用户要求示例代码,所以每个步骤都需要对应的代码片段。例如,创建对象可以用$client = New-Object System.Net.Sockets.TcpClient,然后调用Connect方法。 还要注意错误处理,比如try/catch块,这在引用[3]的端口扫描脚本中有体现,应该在示例中包含。此外,流处理部分,引用[1]提到了使用GetBytes和GetString进行编码转换,这部分也需要在发送和接收数据时展示。 另外,用户可能对异步操作或保持连接感兴趣,但根据问题描述,用户主要想了解基本使用方法,所以先专注于同步的示例,可能再补充一个后台任务的例子,如引用[2]中提到的Start-Job,但需要判断是否必要。不过用户的问题集中在创建和使用TcpClient,可能暂时不需要多线程部分。 还要检查是否需要处理网络异常,比如连接超时或无法连接的情况,确保示例代码的健壮性。例如,在引用[3]中,使用try/catch来捕获连接失败的情况,并输出提示信息。 最后,生成相关问题,可能涉及连接参数、错误处理、数据流操作以及实际应用场景等,需要根据回答内容提出相关的问题,帮助用户进一步学习。 现在需要把这些点组织成结构化的回答,确保每个步骤都有代码示例和解释,同时引用正确的参考文献。例如,在创建实例的部分引用[1],在连接服务器的部分引用[3],在数据发送接收部分引用[1]中的编码方法。 可能需要注意代码格式的正确性,比如PowerShell中的变量定义和方法调用,确保示例可以直接运行。同时,提醒用户关于端口和IP的正确性,以及权限问题,比如是否需要管理员权限运行脚本。 总结,回答应包括以下几个部分: 1. 创建TcpClient实例 2. 连接到服务器 3. 发送数据 4. 接收数据 5. 关闭连接 6. 完整示例(如端口检测) 7. 注意事项 8. 相关问题 每个部分都要有对应的代码和说明,并正确引用提供的资料。确保语言简洁,步骤清晰,符合用户要求的系统级指令,比如数学公式的格式,但在这个问题中可能用不上,所以可以忽略。</think>### 使用 PowerShell 创建 TCP 客户端的步骤说明 以下是使用 `New-Object` 和 `System.Net.Sockets.TcpClient` 创建 TCP 客户端的详细方法及示例: --- #### 1. **创建 TcpClient 实例** 通过 `New-Object` 创建 `TcpClient` 对象,支持直接指定目标地址和端口,或稍后手动连接: ```powershell # 直接连接目标 $client = New-Object System.Net.Sockets.TcpClient("目标IP", 端口号) # 仅创建实例(稍后连接) $client = New-Object System.Net.Sockets.TcpClient ``` --- #### 2. **连接到服务器** 使用 `Connect` 方法与目标服务器建立连接,需捕获可能的网络异常: ```powershell try { $client.Connect("192.168.1.100", 8080) if ($client.Connected) { Write-Host "连接成功!" } } catch { Write-Host "连接失败: $_" -ForegroundColor Red } ``` --- #### 3. **发送数据** 通过 `NetworkStream` 发送字节数据(需将字符串编码为字节数组): ```powershell $stream = $client.GetStream() $message = "Hello Server!" $bytes = [System.Text.Encoding]::ASCII.GetBytes($message) $stream.Write($bytes, 0, $bytes.Length) ``` --- #### 4. **接收数据** 从流中读取响应数据(需解码字节数组为字符串): ```powershell $buffer = New-Object byte[] 1024 $bytesRead = $stream.Read($buffer, 0, $buffer.Length) $response = [System.Text.Encoding]::ASCII.GetString($buffer, 0, $bytesRead) Write-Host "收到响应: $response" ``` --- #### 5. **关闭连接** 操作完成后释放资源: ```powershell $stream.Close() $client.Dispose() ``` --- ### **完整示例:端口连通性检测** ```powershell $targetIP = "127.0.0.1" $port = 80 $client = New-Object System.Net.Sockets.TcpClient try { $client.Connect($targetIP, $port) if ($client.Connected) { Write-Host "$targetIP : $port 端口开放" -ForegroundColor Green } } catch { Write-Host "$targetIP : $port 端口关闭" -ForegroundColor Red } finally { $client.Dispose() } ``` *此代码尝试连接目标端口并返回状态,类似引用[3]中的端口扫描逻辑。* --- ### **注意事项** 1. **编码一致性**:发送/接收数据时需统一编码(如 ASCII、UTF-8),避免乱码[^1]。 2. **异常处理**:网络操作需包含 `try/catch` 块捕获超时或拒绝连接等异常[^3]。 3. **资源释放**:务必调用 `Dispose()` 或使用 `using` 块释放 `TcpClient` 和流对象。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值