我正在远离曾经依赖于.txt输入文件的用户创建脚本。现在,我想直接从Jira Ticket中获取信息。
为避免重做整个脚本,我希望$inputfile
不再是.txt文件,而是$ticket.description
。
$ticket.description
看起来像这样:
Vorname: Adam
Nachname: Tester
Anstellungsart: Festangestellter
Job-Bezeichnung: IT-Guy
Unternehmen: StackOverFlow
Abteilung: ITS
以及读取它的代码,至少以以下内容开头:
$TicketKey = Read-Host "Please enter the Onboarding Ticket Key for this user"
$Ticket = Get-JiraIssue -Key $TicketKey
$Inputfile = $ticket.description | Out-String -Stream
$VornameDis = $inputfile | ?{$_ -like "*Vorname*"} | %{$_.split(":")[1]} | %{$_.trim()}
$NachnameDis = $inputfile | ?{$_ -like "*Nachname*"} | %{$_.split(":")[1]} | %{$_.trim()}
但是对于$ VornameDis或$ NachnameDis,输出始终为:
Adam
Nachname
我认为Out-String -Stream
有一个问题,就是不能通过换行符拆分输入,但是不能确定。任何帮助表示赞赏。
答案 0 :(得分:1)
[some-value-expression] |Out-String -Stream
的输出将是每个输入元素一个字符串-并且由于$ticket.description
可能已经是一个字符串,因此最终$inputfile
是一个大的多行字符串
为了将每一行过滤为一个单独的字符串,我们首先需要将其拆分为新的行字符:
$intputfile = $inputfile -split '\r?\n'
$VornameDis = $inputfile | ?{$_ -like "*Vorname*"} | %{$_.split(":")[1]} | %{$_.trim()}
$NachnameDis = $inputfile | ?{$_ -like "*Nachname*"} | %{$_.split(":")[1]} | %{$_.trim()}
尽管我怀疑您可以完全跳过Out-String
并这样做:
$inputfile = $ticket.description -split '\r?\n'
$VornameDis = $inputfile | ?{$_ -like "*Vorname*"} | %{$_.split(":")[1]} | %{$_.trim()}
...