Невозможно получить возвращаемое значение - PullRequest
0 голосов
/ 28 января 2019

Следующий фрагмент не производит вывод, который мне нужен.

function replaceBlankSpacewithUnderscore
{             Param([Parameter(Mandatory=$true)]
               [string]$stringToClean)

    $cleanString = $stringToClean

    if($cleanString.Contains(" ")){
        $cleanString.Replace(" ", "_")
    }
    return $cleanString
}

# Prompt user for Company name
$companyName = Read-Host "Enter Company Name"

# Trim the string to make sure no leading or trailing whitespace exists
$companyName = $companyName.Trim()

# Prompt user for Position
$position = Read-Host "Enter Job Position"

# Trim the string to make sure no leading or trailing whitespace exists
$position = $position.Trim()

# Construct our new filename with the company name and position

# Company name to Lower Case
$companyNametoLowerCase = $companyName.ToLower()

# Position name to Lower Case
$positiontoLowerCase = $position.ToLower()

$companyNamewithUnderScores = replaceBlankSpacewithUnderscore -stringToClean $companyNametoLowerCase
$positionwithUnderScores = replaceBlankSpacewithUnderscore -stringToClean $positiontoLowerCase 

# Combine company name and position (lower case) into one string
$companyNameandPosition = [string]::Format("{0}_{1}", $companyNamewithUnderScores, $positionwithUnderScores)

Write-Output $companyNameandPosition

Предположим, что ввод равен Microsoft Corp и Software Eng.

Выход $companyNameandPosition равен System.Object[]_System.Object[]

Я прочитал эту SO страницу и эту Microsoft Docs страницу, но я не могу заставить ее работать.

Ожидаемый результат - microsoft_corp_software_eng.odt

1 Ответ

0 голосов
/ 28 января 2019

В вашей функции два объекта передаются в конвейер: $cleanString.Replace(" ", "_") и $cleanString в операторе возврата.$ cleanstring не изменяется BTW.

Для таких операций, как замена, tolower и trim, можно использовать множество шагов, которые можно объединить в одном выражении.Я изменил некоторые вещи:

# Prompt user for Company name
$companyName = Read-Host "Enter Company Name"

# Prompt user for Position
$position = Read-Host "Enter Job Position"

# Combine company name and position (lower case) into one string
$companyNameandPosition = [string]::Format("{0}_{1}", $companyName.Replace(' ','_').ToLower().Trim(), $position.Replace(' ','_').ToLower().Trim())

Write-Output $companyNameandPosition
...