ファイルのさまざまな条件に基づいてフラグを設定する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として生成されます。ただし、関数の最後でこれらの2行を叩くと、
$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
変数がフラッシュされたように見えます。ただし、試す前に、Write-Hostの後に何が起こって、それが有効であると見なされないのかを理解したいと思います。それとも私が見逃しているものが他にありますか?$t
WriteLine
out-file
$t
Write Line