Amazon web services 使用AWS获取SSMMaentenanceWindowTargets Cmdlet

Amazon web services 使用AWS获取SSMMaentenanceWindowTargets Cmdlet,amazon-web-services,powershell,aws-powershell,Amazon Web Services,Powershell,Aws Powershell,以下代码 function Get-SSMMaintenanceWindowMatch ($instance) { $mws = (Get-SSMMaintenanceWindowList -Region eu-central-1).WindowId for ($i=0; $i -le $mws.Length; $i++) { $val = ((Get-SSMMaintenanceWindowTargets -region eu-central-1 -WindowId

以下代码

function Get-SSMMaintenanceWindowMatch ($instance) {
  $mws = (Get-SSMMaintenanceWindowList -Region eu-central-1).WindowId
  for ($i=0; $i -le $mws.Length; $i++)  {
        $val = ((Get-SSMMaintenanceWindowTargets -region eu-central-1 -WindowId $mws[$i]).Targets).Values
        if (($val -eq $instance) -and ($val -eq $null)) {
        return $instance
        else {
        return -1
             }

      }
   }
}
给出以下错误

PS C:\WINDOWS\system32> Get-SSMMaintenanceWindowMatch $instanceId
Get-SSMMaintenanceWindowTargets : 1 validation error detected: Value null at 'windowId' failed to satisfy constraint: Member must not be 
null
At line:4 char:18
+ ...    $val = ((Get-SSMMaintenanceWindowTargets -region eu-central-1 -Win ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (Amazon.PowerShe...owTargetsCmdlet:GetSSMMaintenanceWindowTargetsCmdlet) [Get-SSMMaintenan 
   ceWindowTargets], InvalidOperationException
    + FullyQualifiedErrorId : Amazon.SimpleSystemsManagement.AmazonSimpleSystemsManagementException,Amazon.PowerShell.Cmdlets.SSM.GetSSMMa 
   intenanceWindowTargetsCmdlet
某些维护窗口将没有值,因为没有向其注册目标(实例)。在此时刻,数组的一个成员为null,函数不起作用。如果我使用一个直接注册的实例,它就会工作

如何使循环仅与空成员一起工作


Thx用于任何输入。

我认为问题在于for循环。你有

 for ($i=0; $i -le $mws.Length; $i++)
-le是“小于或等于”的运算符,因此您正在经过数组的末尾,我认为您在那里拾取了一个空条目。我认为您需要-lt

 for ($i=0; $i -lt $mws.Length; $i++)

好的,我会试试看!非常感谢。你想在这里做什么?($val-eq$instance)和($val-eq$null)此外,如果维护窗口目标基于tagsHi,sry,则针对实例进行搜索可能不准确。这是一个错误,但有两个条件。我已经纠正了它,但该实例不是基于标签的。这只是内部给出的一个函数。