0

ここにあるように、現在の日付フォルダーにxmlファイルが保存されています-このリンクを参照してください
今、xmlの特定の部分を読み取り、それをcsvファイルに出力したいと思います。リンクのように $location を入力として使用して、現在の日付フォルダーのみに基づいて xml ファイルを読み取るにはどうすればよいですか?

私は使用してみました:

$locatexml = -item -path $rptdir -itemtype Directory -Name ("XML_$(Get-Date -f yyyy_mm_dd)")

しかし、エラーが発生します-単項演算子「-」の後に式がありません。 現在のフォルダーを $locatexml に割り当てるにはどうすればよいですか? 現在の日付フォルダーに存在するすべての xml ファイルを参照できるようにするには?

日付フォルダーにあるxmlファイルを読み取ろうとしている私のコード:

$locatexml から -itemtype を削除し、フルネームを別の変数 $locatexml2 に割り当てています。

$locatexml = get-item -path $reportdir -Name ("XML_$(Get-Date -f yyyy_MM_dd)")
**Do I need $locatexml2 here?**
$locatexml2 = "$($location.fullname)" 

Function DoRpt($locatexml2)
{
$rptOut="Asm"
Get-ChildItem  $locatexml2 | ForEach-Object {        
$file = Get-Content -path $locatexml2\$_ -totalcount 15
try {
$asm = [regex]::matches($file[5], 'asm=".*" ')[0].value -replace 'asm="(.*)" ','$1' 
      $rptOut=$rptOut+"`n$Asm,$locatexml2\$_"        
} catch {}   
}
Set-Content -path $testdir\test.csv -value $rptOut
}

XML は次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<Rpt Version="10.0">
<Targets>
<Target="\\Shared\Data\SB\app\bin\test.dll">
<Mods>
<Mod="test.dll" asm="1.0.0000.000">
</Mod>
</Mods>
</Target>
</Targets>
</Rpt>

以下に示すように $locatexml を割り当てるすべての方法を試しましたが、うまくいきません.上記のコードに欠けているものはありますか?

ここで $locatexml2 が本当に必要ですか?

ありがとう!

4

2 に答える 2

1

dir探しているフォルダ名を指定して、親ディレクトリでaを実行します。$rptdirは、日付の名前が付いたサブディレクトリが存在する親ディレクトリを示す文字列であると想定しています。

$locatexml = dir -Path $rptdir -Filter "XML_$(Get-Date -f yyyy_MM_dd)"
于 2012-10-31T01:23:44.967 に答える
0

これにより、Directory オブジェクトが $rptdir のフォルダー名と一致する $locationxml に割り当てられますyyyy_MM_dd

$locationxml = $rptdir | Where-Object {$_.Name -eq (Get-Date -f yyyy_MM_dd)}

日付形式文字列...大文字のMMを使用して月を取得することに注意してください(問題の例の構文には小文字のmmがあり、分が得られます)。

于 2012-10-30T18:46:28.867 に答える