0

私はpowershellを初めて使用しますが、エラーが発生する理由について何か考えはありますか?

昨日の日付 = (get-date).AddDays(-1).ToString("yyyMMdd")

 $jsb={
  $file = 'C:\Users\d1\Documents\Batch\path\$Yesterday_Date1\page.log'
  Get-Content $file -Wait | ForEach-Object -Begin {
   $counter = 1
  $lines = @(Get-Content $file).Count
   } -Process {
        if ($counter++ -gt $lines) {
    write-host $_ 
   }
  }
    }

Start-Job $jsb -name Dum

do{
Receive-Job -Name Dum | out-file C:\Users\path\pager.txt -append
}while(1)
4

1 に答える 1

0

いくつかの構文エラー。

$1 つ目:変数 昨日_日付から欠落しています。さらに、後で$Yesterday_Date1ではなくvariable を参照しています$Yesterday_DateSet-PSDebug -Strictこのようなエラーをキャッチするために常に使用します。正しいフォームは

$Yesterday_Date = (get-date).AddDays(-1).ToString("yyyMMdd")

2番目: 一重引用符は文字列内の変数を評価しません。二重引用符はそうです。検討:

$file = 'C:\Users\d1\Documents\Batch\path\$Yesterday_Date\page.log'
$file
# Output
C:\Users\d1\Documents\Batch\path\$Yesterday_Date1page.log

$file2 = "C:\Users\d1\Documents\Batch\path\$Yesterday_Date1\page.log"
$file2 
# Output
C:\Users\d1\Documents\Batch\path\20130520\page.log

編集:

コメントの質問に対処するには、問題は、ジョブに特別なパラメーター処理が必要なことです。-Arg日付変数をパラメーターとして渡すために使用します。そのようです、

$Yesterday_Date = (get-date).AddDays(-1).ToString("yyyMMdd") 
$jsb={
  param($date) 
  $file = "C:\Users\d1\Documents\Batch\path\$date\page.log" 
  write-host $file
}

Start-Job $jsb -name Dummy -arg $Yesterday_Date
Wait-Job -name Dummy
Receive-Job -Name Dummy
# Output
C:\Users\d1\Documents\Batch\path\20130521\page.log
于 2013-05-21T04:57:54.700 に答える