最も基本的な意味では、IDの配列を返すSQLクエリがあります。これは変数$ID
に格納されています。私は、その後にIDのいずれかを含む任意のファイル名の特定のフォルダにGet-childitem
を実行する可能性が存在する三つの可能なファイル名がある変数($ID
)言った:Arrayとget-childitemを使用して特定のIDを持つファイル名を検索する
$ID.xml
$ID_input.xml
$ID_output.xml
結果がget-childitem
になると、これをテキストファイルとして出力し、フォルダからファイルを削除します。私が問題を抱えている部分は、get-childitem
の結果をフィルタリングして、探しているファイル名を定義しているため、SQL出力のIDを含むファイルだけがget-childitem
の結果に表示されます。
私はその中から所望のファイル名を構築し、その上に削除項目を実行し、for-each ($i in $id)
を使用することにより、正常に動作しますこれを行うための別の方法を見つけた:
# Build list of XML files
$XMLFile = foreach ($I in $ID)
{
"$XMLPath\$I.xml","$XMLPath\$I`_output.xml","$XMLPath\$I`_input.xml"
}
# Delete XML files
$XMLFile | Remove-Item -Force
しかし、これはエラーの多くを生産します存在しないがIDがデータベースに存在するファイルを削除しようとするときに、シェル内で実行されます。私はまた、実際に削除されたファイルのテキスト出力をどのようにして作成するのか、この方法では理解できないので、可能であればget-childitem
のアプローチに戻したいと思います。
アイデアをいただければ幸いです。より多くの情報が必要な場合は、尋ねてください。
どうもありがとうございました。これは素晴らしい仕事でした。私が変更しなければならなかったもう1つのことがありました。 Select-Object -ExpandProperty id。変数$ IDに格納されているSQLクエリの出力はオブジェクト型でしたが、文字列の配列として必要でしたので、これを行う必要がありました。 – MikeT
そのため、サンプル '$ id'を追加したので、値がどのようになっているか知ることができます。私はたぶん '$ id = $ sqlresults | select-object -expand id'という変数名自体がIDだと言っていますが、これはちょっとした情報です:-)幸運な "Powershelling" –