多个相同输出触发
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 仅用于显示目的
您的代码现在尝试将 string 与 Microsoft.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"
}
}
我写了一个脚本来匹配这两个值。一个来自我的输入,另一个是我从域域服务器中的查询中获取某些值。我需要匹配我的输入值和查询的输出值。但是,如果 运行 脚本意味着它会提供多个相同的输出。请找到随附的输出屏幕截图和我的脚本。
$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 仅用于显示目的
您的代码现在尝试将 string 与 Microsoft.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"
}
}