首页 > 解决方案 > Powershell Invoke-CImMethod 类型不匹配

问题描述

为什么这行得通?

Get-CimInstance -Namespace "root/CIMV2/TerminalServices" -ClassName "Win32_TSGatewayServerSettings" | Invoke-CimMethod -MethodName "SetIPAndPort" -Arguments @{TransportType=1; IPAddress="*"; Port=4443; OverrideExisting=1}

但是这个:

Invoke-CimMethod -Namespace "root/CIMV2/TerminalServices" -ClassName "Win32_TSGatewayServerSettings" -MethodName "SetIPAndPort" -Arguments @{TransportType=1; IPAddress="*"; Port=4443; OverrideExisting=1}

给出一个错误:

Invoke-CimMethod:参数“端口”的类型不匹配

Port参数应该是一个unit16我可以这样转换它,但它会跳过其他布尔值。

Invoke-CimMethod -Namespace "root/CIMV2/TerminalServices" -ClassName "Win32_TSGatewayServerSettings" -MethodName "SetIPAndPort" -Arguments @{TransportType=1; IPAddress="*"; Port=[uint16]4443; OverrideExisting=1}

Invoke-CimMethod:参数“OverrideExisting”的类型不匹配

我不明白为什么使用Get-CimInstance会改变有关转换变量的任何内容。

标签: powershell

解决方案


推荐阅读