PowerShell脚本在第一次运行时不返回数据

时间:2018-10-10 16:29:30

标签: powershell active-directory

我创建了一个PowerShell脚本,以从描述中的值中找到计算机名称。我们将用户名放在描述中,而计算机名是资产标签号。如果您继续操作,然后再次输入该名称,它将起作用。如果您要寻找其他用户,则也必须做两次。

这是我的剧本:

Import-Module ActiveDirectory

do {
    $a = Read-Host "Enter first or last name of user"
    $b = "*$a*"

    # Validates if the command returns data
    $searcher = $(try {
        Get-ADComputer -Filter {Description -like $b} -Properties
Name,Description | Select Name,Description
    } catch {
        $null
    })

    if ($searcher -ne $null) {
        Get-ADComputer -Filter {Description -like $b } -Properties Name,Description |
            Select Name,Description
    } else {
        Write-Host Could not find: $a -ForegroundColor "yellow"
    }

    # If running in the console, wait for input before closing.
    if ($Host.Name -eq "ConsoleHost") {
        Write-Host "Press any key to continue..."
        $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyUp") > $null
    }
    $again = Read-Host 'Would you like to search again? (Y/N)'
} until ($again -eq 'No' -or $again -eq 'n')

1 个答案:

答案 0 :(得分:0)

这是一个使用脚本进行一些更改的有效示例。

允许它工作的最大变化是使用Out-HostGet-ADComputer的管道

# installs AD module 
Import-Module ActiveDirectory

Do {
    $a = Read-Host "Enter first or last name of user"
    $b = "*$a*"

    try {
        Get-ADComputer -Filter {Description -like $b} -Properties Name, Description -ErrorVariable MyError | 
            Select-Object Name,Description | 
            Out-Host

        if ($MyError){
            write-host Could not find: $a -foregroundcolor Yellow
        }
    } 
    catch {
        write-host Could not find: $a -foregroundcolor Red
    }
    $again = Read-host 'Would you like to search again? (Y/N)'
} 
Until (
    $again -eq 'No' -or $again -eq 'n'
)