Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 方法调用失败,因为[Microsoft.Exchange.Data.Directory.ADObjectId]不';t包含名为'的方法;op#U添加';_Powershell - Fatal编程技术网

Powershell 方法调用失败,因为[Microsoft.Exchange.Data.Directory.ADObjectId]不';t包含名为'的方法;op#U添加';

Powershell 方法调用失败,因为[Microsoft.Exchange.Data.Directory.ADObjectId]不';t包含名为'的方法;op#U添加';,powershell,Powershell,我以前从未在PowerShell中遇到过此错误。使用IDE它可以工作,但在ExchangeShell窗口中不工作 我可以在C#中整天这样做,但由于某些原因,它在Powershell中不起作用。我在网上看到过很多例子,说我不能在.Add()方法中使用+,也不能将$results定义为一个数组,并使用+=进行处理,但这些都不起作用 我希望有人能修改我的代码,但也能告诉我为什么这不起作用,这样我就不会再犯这个错误了 错误消息是 Method invocation failed because [Mic

我以前从未在PowerShell中遇到过此错误。使用IDE它可以工作,但在ExchangeShell窗口中不工作

我可以在C#中整天这样做,但由于某些原因,它在Powershell中不起作用。我在网上看到过很多例子,说我不能在
.Add()
方法中使用
+
,也不能将
$results
定义为一个数组,并使用
+=
进行处理,但这些都不起作用

我希望有人能修改我的代码,但也能告诉我为什么这不起作用,这样我就不会再犯这个错误了

错误消息是

Method invocation failed because [Microsoft.Exchange.Data.Directory.ADObjectId] doesn't contain a method named 'op_Addition'. At C:\Users\XXXX\Desktop\bleh1.ps1:168 char:3 + $results.Add($serverName + "|" + $totalDbs.ToString() + "|" + $activeDbs.ToSt ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~‌​~~~~~~~~~~~~~~~~~~~~‌​~~~ + CategoryInfo : InvalidOperation: (op_Addition:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound
这就是最终的效果,谢谢@MacroPower的帮助。你删除了你的帖子,所以我不知道如何给你的回答信用

您是对的,因为$server变量没有显式地作为字符串类型,所以需要.ToString()强制转换

[int] $mountedDBs = 0;
[int] $dismountedDBs = 0;
$preferenceOne = 0;
$preferenceTwo = 0;
$preferenceThree = 0;
$preferenceFour = 0;
[int] $displayLineCount = 0;
$results = New-Object "System.Collections.Generic.List[String]"


foreach($server in $servers)
{
    if ($server -ne "")
    {
        [Array]$values = Get-MailboxDatabase -Server $server -Status;
        $serverTest = $server;
        Clear-Item Variable:mountedDBs
        Clear-Item Variable:dismountedDBs

        for($i = 0; $i -lt $values.Count; $i++)
        {
            #servername     totaldbs    activedbs   passivedbs  preferencecountlist     mounteddbs      dismounteddbs   dagname
            $serverName = $server; 
            $totaldbs = $values.Count;
            $temp1 = $values[$i].Mounted;

            if ($values[$i].Mounted -eq "true")
            {
                $mountedDBs = $mountedDBs + 1;
            }
            else
            {
                $dismountedDBs = $dismountedDBs + 1;
            }

            $activationPrefTemp = $values[$i].ActivationPreference;
            for($j = 0; $j -lt $activationPrefTemp.Count; $j++)
            {
                $temp1 = $activationPrefTemp[$j].ToString();
                if ($activationPrefTemp[$j].ToString().Contains($server.ToString()))
                {
                    $activationPref = $activationPrefTemp[$j];
                    [string]$activationPrefNumber = $activationPref;
                    [int] $index = $activationPrefNumber.IndexOf(",");
                    $activationPrefNumber = $activationPrefNumber.Remove(0, $index + 1);
                    $activationPrefNumber = $activationPrefNumber.Trim()
                    $index = $activationPrefNumber.IndexOf("]");
                    $activationPrefNumber = $activationPrefNumber.Remove($index);

                    Switch ($activationPrefNumber) 
                    {
                        1 {$preferenceOne = $preferenceOne + 1; break;}
                        2 {$preferenceTwo = $preferenceTwo + 1; break;}
                        3 {$preferenceThree = $preferenceThree + 1; break;}
                        4 {$preferenceFour = $preferenceFour + 1; break;}
                        default {$null}
                    }
                }
            }           
            $mountedDBs = $mountedDBs;
        }
        $activeDbs = $preferenceOne;
        $passiveDbs = $preferenceTwo + $preferenceThree + $preferenceFour;

        $results.Add($serverName.ToString()  + "|" + $totalDbs.ToString() + "|" + $activeDbs.ToString() + "|" + $passiveDbs.ToString() + "|" + $preferenceOne + "," + $preferenceTwo + "," + $preferenceThree + "," + $preferenceFour + "|" + $mountedDBs + "|" + $dismountedDbs + "|" + $dagName);
        $displayLineCount = $displayLineCount + 1 | Out-Null;
        $preferenceOne = 0; 
        $preferenceTwo = 0;
        $preferenceThree = 0;
        $preferenceFour = 0;
    }

尝试查找并替换“| Out Null;”。你的情况改善了吗?您能否在此提供更多有关实际出错的详细信息?请检查您试图连接的变量中有哪些包含有问题的对象(
$varname.GetType().FullName
)。
[int] $mountedDBs = 0;
[int] $dismountedDBs = 0;
$preferenceOne = 0;
$preferenceTwo = 0;
$preferenceThree = 0;
$preferenceFour = 0;
[int] $displayLineCount = 0;
$results = New-Object "System.Collections.Generic.List[String]"


foreach($server in $servers)
{
    if ($server -ne "")
    {
        [Array]$values = Get-MailboxDatabase -Server $server -Status;
        $serverTest = $server;
        Clear-Item Variable:mountedDBs
        Clear-Item Variable:dismountedDBs

        for($i = 0; $i -lt $values.Count; $i++)
        {
            #servername     totaldbs    activedbs   passivedbs  preferencecountlist     mounteddbs      dismounteddbs   dagname
            $serverName = $server; 
            $totaldbs = $values.Count;
            $temp1 = $values[$i].Mounted;

            if ($values[$i].Mounted -eq "true")
            {
                $mountedDBs = $mountedDBs + 1;
            }
            else
            {
                $dismountedDBs = $dismountedDBs + 1;
            }

            $activationPrefTemp = $values[$i].ActivationPreference;
            for($j = 0; $j -lt $activationPrefTemp.Count; $j++)
            {
                $temp1 = $activationPrefTemp[$j].ToString();
                if ($activationPrefTemp[$j].ToString().Contains($server.ToString()))
                {
                    $activationPref = $activationPrefTemp[$j];
                    [string]$activationPrefNumber = $activationPref;
                    [int] $index = $activationPrefNumber.IndexOf(",");
                    $activationPrefNumber = $activationPrefNumber.Remove(0, $index + 1);
                    $activationPrefNumber = $activationPrefNumber.Trim()
                    $index = $activationPrefNumber.IndexOf("]");
                    $activationPrefNumber = $activationPrefNumber.Remove($index);

                    Switch ($activationPrefNumber) 
                    {
                        1 {$preferenceOne = $preferenceOne + 1; break;}
                        2 {$preferenceTwo = $preferenceTwo + 1; break;}
                        3 {$preferenceThree = $preferenceThree + 1; break;}
                        4 {$preferenceFour = $preferenceFour + 1; break;}
                        default {$null}
                    }
                }
            }           
            $mountedDBs = $mountedDBs;
        }
        $activeDbs = $preferenceOne;
        $passiveDbs = $preferenceTwo + $preferenceThree + $preferenceFour;

        $results.Add($serverName.ToString()  + "|" + $totalDbs.ToString() + "|" + $activeDbs.ToString() + "|" + $passiveDbs.ToString() + "|" + $preferenceOne + "," + $preferenceTwo + "," + $preferenceThree + "," + $preferenceFour + "|" + $mountedDBs + "|" + $dismountedDbs + "|" + $dagName);
        $displayLineCount = $displayLineCount + 1 | Out-Null;
        $preferenceOne = 0; 
        $preferenceTwo = 0;
        $preferenceThree = 0;
        $preferenceFour = 0;
    }