多个相同输出触发

Multiple same output triggering

我写了一个脚本来匹配这两个值。一个来自我的输入,另一个是我从域域服务器中的查询中获取某些值。我需要匹配我的输入值和查询的输出值。但是,如果 运行 脚本意味着它会提供多个相同的输出。请找到随附的输出屏幕截图和我的脚本。

$Inputui = Read-Host "Enter" –AsSecureString
$results = Get-ADUser -Filter {Enabled -eq $false} | FT samAccountName
foreach ($result in $results)
   {
       if($Inputui -match $result)
       {
   
      Write-output "ID Available"

      }
             
      else {

        Write-output "ID Not Available"

      }
      }  

因为匹配失败进入else块。试试下面的代码

$Inputui = Read-Host "Enter" –AsSecureString
Get-AdUser -filter -Filter {Enabled -eq $false} | where-object {$_ -contains "$Inputui"} | FT samAccountName

看来您想测试通过 Read-Host 提供的 SamAccountname 是否可以在域中找到,对吗?

然后:

  • 如果您需要进一步处理结果,请不要使用 Format-* cmdlet,因为这些 cmdlet 仅用于显示目的
    您的代码现在尝试将 stringMicrosoft.PowerShell.Commands.Internal.Format object

    进行比较
  • 删除 -AsSecureString。您只需要将给定的字符串(密码)转换为 SecureString

  • -Filter参数实际上应该是一个字符串,而不是脚本块

$Inputui = Read-Host "Enter user SamAccountName"
Get-ADUser -Filter "Enabled -eq '$false'" | ForEach-Object {
    # using -match results in a partial match, just like 
    # $Inputui -like "*$($_.SamAccountName)*" would do
    # if you want an exact match, use the -eq operator instead
    if ($Inputui -match $_.SamAccountName) {
        Write-Host "ID Available"
    }
    else {
        Write-Host "ID Not Available"
    }
}