У меня есть сценарий PowerShell, который устанавливает флаги на основе различных условий файла. Я буду сокращать для краткости.
$path = "c:\path"
$srcfiles = Get-ChildItem $path -filter *.htm*
ForEach ($doc in $srcfiles) {
$s = $doc.Fullname
Write-Host "Processing :" $doc.FullName
if (stuff) {flag 1 = 1} else {flag 1 = 0}
if (stuff) {flag 1 = 1} else {flag 1 = 0}
if (stuff) {flag 1 = 1} else {flag 1 = 0}
$t = "$s;$flag1;$flag2;$flag2"
Write-Host "Output: " $t
Все это прекрасно работает. Мой файл обрабатывается, флаги установлены правильно, а аккуратная строка с разделителями точками с запятой генерируется как $t. Однако, если я добавлю эти две строки в конце функции,
$stream = [System.IO.StreamWriter] "flags.txt"
$stream.WriteLine $t
Я получаю эту ошибку.
Unexpected token 't' in expression or statement.
At C:\CGC003a.ps1:53 char:25
+ $stream.WriteLine $t <<<<
+ CategoryInfo : ParserError: (t:String) [], ParseException
+ FullyQualifiedErrorId : UnexpectedToken
Если я читаю эту запись, кажется, что write-host
сбросил мою переменную $t
до того, как она попала в WriteLine
. Однако, прежде чем я попробую out-file
, я хочу понять, что происходит с $t
после Write-Host, из-за чего Write Line
не видит его действительным. Или есть что-то еще, что мне не хватает?