Выходные данные скрипта Powershell объединяются, а не разделяются по отдельности - PullRequest
0 голосов
/ 05 ноября 2019

Я сделал этот сценарий для проверки связи с именем компьютера и, если это возможно, для получения имени пользователя вошедшего в систему пользователя и, если того пожелает пользователь сценария, списка всех установленных программ и списка установленных принтеров. пользователь использует.

Когда я запускаю скрипт, он возвращает имя пользователя и требует ввода данных от пользователя, если они хотят видеть установленные программы, пользователь отвечает Y или N. Затем он спрашивает пользователя, хотят ли оник списку принтеров. Сценарий затем выводит список программ и принтеров в виде одного ответа.

Моя проблема в том, что я хотел бы, чтобы скрипт спрашивал, хочет ли пользователь список программ, а затем выводит список программ,затем спросите, хочет ли пользователь список принтеров, затем выведите список принтеров.

Я не знаю, как это сделать, искал, экспериментировал и не нашел решения.

Любая помощьили совет будет принята с благодарностью:)

Извинения за длинный пост

# This script shows who is currently logged on to a machine

$PCNAME = Read-Host "Please enter computer name"

Write-Host "Pinging computer name..."

# If the computer responds to ping then the user name will be displayed

If (Test-Connection -ComputerName $PCNAME -Quiet)

    {
    $User = Get-WmiObject Win32_ComputerSystem -ComputerName $PCNAME | Select-Object -ExpandProperty UserName
    $Time = Get-Date -DisplayHint Time


                Write-Host ""
     $CurUser = Write-Host "The current user logged in to $PCNAME is $User at $Time" -ForegroundColor Green
                Write-Host ""
    }

        #PROGRAMS

    $Programs = Read-Host "Would you like to see what programs $User has installed? Enter Y or N"


        If ($Programs -eq "Y") {
                Write-Host ""
                Write-Host "Retrieving list of installed programs..."
                Write-Host ""

        Get-WmiObject -ComputerName $PCNAME -Class Win32_Product | sort-object Name | select Name
                            }

        ElseIf ($Programs -ne "Y" -and $Programs -eq "N") {
                Write-Host ""
                Write-Host "Will not retrieve list of installed programs."
                                                    }


    #PRINTERS

$Printers = Read-Host "Would you like to see the pinters that $User is using? Enter Y or N"

    If ($Printers -eq "Y") {
        Write-Host ""
        Write-Host "Getting printers..."
        Write-Host ""


# Collect port names and host addresses into hash table
$hostAddresses = @{}
Get-WmiObject Win32_TCPIPPrinterPort -ComputerName $PCNAME | ForEach-Object {
  $hostAddresses.Add($_.Name, $_.HostAddress)
}

Get-WmiObject Win32_Printer -ComputerName $PCNAME | ForEach-Object {
  New-Object PSObject -Property @{
    "Name" = $_.Name
    "DriverName" = $_.DriverName
    "HostAddress" = $hostAddresses[$_.PortName]
  }
}

}

    ElseIf ($Printers -ne "Y" -and $Printers -eq "N") {
        Write-Host ""
        Write-Host "Could not get printers"
        Write-Host ""
        }




 Else  
    {
    Write-Host ""
    Write-Host "Could not ping $PCNAME at $Time" -ForegroundColor DarkCyan
    }


Write-Host ""
#$EndPrompt = ( Read-Host -Prompt "Press Enter to finish" )

1 Ответ

0 голосов
/ 05 ноября 2019

Есть лучшие способы сделать это в целом, но самый простой способ добавить это:

        #PROGRAMS

    $Programs = Read-Host "Would you like to see what programs $User has installed? Enter Y or N"


        If ($Programs -eq "Y") {
                Write-Host ""
                Write-Host "Retrieving list of installed programs..."
                Write-Host ""

        $Installed = Get-WmiObject -ComputerName $PCNAME -Class Win32_Product | sort-object Name | select Name
        $Installed | Out-Host
                            }

        ElseIf ($Programs -ne "Y" -and $Programs -eq "N") {
                Write-Host ""
                Write-Host "Will not retrieve list of installed programs."
                                                    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...