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没有定义的含义。您的预期结果是什么?因为您需要找到另一种方法来实现它。。。