PowerShell脚本中出错:方法调用失败,因为[System.Management.Automation.PSObject]不包含名为';op#U添加';
每当我运行下面的脚本时,就会出现一条错误消息。 您能帮我识别并修复此错误消息吗 错误消息:PowerShell脚本中出错:方法调用失败,因为[System.Management.Automation.PSObject]不包含名为';op#U添加';,powershell,Powershell,每当我运行下面的脚本时,就会出现一条错误消息。 您能帮我识别并修复此错误消息吗 错误消息: Method invocation failed because [System.Management.Automation.PSObject] does not contain a method named 'op_Addition' At line:1 char:1 + $success + $failed | + ~~~~~~~~~~~~~~~~~~~~ +
Method invocation failed because [System.Management.Automation.PSObject] does not contain a method named 'op_Addition'
At line:1 char:1
+ $success + $failed |
+ ~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (op_Addition:String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
以下是完整的脚本:
$Header = @"
<style>
table {
font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
border-collapse: collapse;
width: 100%;
}
th {
padding-top: 12px;
padding-bottom: 12px;
text-align: left;
background-color: green;
color: white;
}
</style>
"@
$params = @{
ComputerName = Get-Content -Path 'C:\servers.txt'
Count = 1
ErrorAction = 'SilentlyContinue'
ErrorVariable = 'errors'
}
$success = Test-Connection @params |
Select-Object @{n='Server';e={$_.address}},
IPv4Address,
@{n='Result';e={'Successful'}}
$failed = $errors.exception.message |
Where-Object {$_ -match "computer '(.+?)'"} |
Select-Object @{n='Server';e={$matches.1}},
@{n='IPv4Address';e={"N/A"}},
@{n='Result';e={'Failed'}}
$success + $failed |
ConvertTo-Html -Title "Fragment" -Head $Header |
Set-Content -Path StatusReport.html -Encoding UTF8
$Header=@”
桌子{
字体系列:“投石机MS”,Arial,Helvetica,无衬线;
边界塌陷:塌陷;
宽度:100%;
}
th{
填充顶部:12px;
垫底:12px;
文本对齐:左对齐;
背景颜色:绿色;
颜色:白色;
}
"@
$params=@{
ComputerName=获取内容-路径“C:\servers.txt”
计数=1
ErrorAction='SilentlyContinue'
ErrorVariable='errors'
}
$success=测试连接@params|
选择对象@{n='Server';e={$\地址},
IPV4地址,
@{n='Result';e={'Successful'}
$failed=$errors.exception.message|
其中对象{$\匹配“计算机”(.+?)”}|
选择对象@{n='Server';e={$matches.1},
@{n='IPv4Address';e={“n/A”},
@{n='Result';e='Failed'}
$success+$failed|
转换为Html-标题“片段”-标题$Header|
设置内容-路径StatusReport.html-编码UTF8
$success+$failed
预期会失败,因为这些变量包含[pscustomobject]
实例(完整类型名称为[System.Management.Automation.PSObject]
,由cmdlet返回:
[pscustomobject]
实例没有错误消息所示的op_addition
方法,,该方法通常隐藏在+
操作符下方。
如果
$success
是单个对象,您可能需要的是:
$success, $failed | ConvertTo-Html ...
这将通过管道将两个对象逐个发送到转换为Html
,通过管道自动枚举的,
构造数组
如果,$success
可能是一个标量(单个对象)或一个对象数组-这取决于测试连接
是否返回一个或多个对象-使用@()
,用于确保始终将$success
视为一个数组,这样您就可以安全地执行与+
的数组连接(见下文):
请注意,可以将数组与
+
连接起来,但仅当(至少)LHS已经是一个数组了。。您可以使用一元形式的,
根据需要创建一个单元素数组,然后将+
应用于该数组,然后将RHS连接起来形成一个新数组。因此,以下语句与上述语句等效:
# `, $success` construct a single-element array, and `+` then concatenates
# $failed to it (even though $failed is just a scalar), resulting in a (new)
# 2-element array.
, $success + $failed | ConvertTo-Html ...
请注意,如果RHS也是一个数组,则其元素将逐个追加(与将整个数组追加为单个新元素相反);例如,1,2+3,4
生成新数组1,2,3,4
$success+$failed
预期会失败,因为这些变量包含[pscustomobject]
实例(完整类型名称为[System.Management.Automation.PSObject]
,由cmdlet返回:
[pscustomobject]
实例没有错误消息所示的op_addition
方法,,该方法通常隐藏在+
操作符下方。
如果
$success
是单个对象,您可能需要的是:
$success, $failed | ConvertTo-Html ...
这将通过管道将两个对象逐个发送到转换为Html
,通过管道自动枚举的,
构造数组
如果,$success
可能是一个标量(单个对象)或一个对象数组-这取决于测试连接
是否返回一个或多个对象-使用@()
,用于确保始终将$success
视为一个数组,这样您就可以安全地执行与+
的数组连接(见下文):
请注意,可以将数组与
+
连接起来,但仅当(至少)LHS已经是一个数组了。。您可以使用一元形式的,
根据需要创建一个单元素数组,然后将+
应用于该数组,然后将RHS连接起来形成一个新数组。因此,以下语句与上述语句等效:
# `, $success` construct a single-element array, and `+` then concatenates
# $failed to it (even though $failed is just a scalar), resulting in a (new)
# 2-element array.
, $success + $failed | ConvertTo-Html ...
请注意,如果RHS也是一个数组,则其元素会逐个追加(与将整个数组追加为单个新元素相反);例如,
1,2+3,4
生成新数组1,2,3,4
错误消息基本上描述了问题-“添加”没有定义的含义两个PSObject。您的预期结果是什么?因为您需要找到另一种方法来实现它…错误消息几乎描述了问题-添加两个PSObject没有定义的含义。您的预期结果是什么?因为您需要找到另一种方法来实现它。。。