2017-12-01 5 views
0

1709をワイルドカードとして使用するにはどうすればよいですか? 1709の値は$MoveItem.Versionという配列に格納されていますが、*のように配列から値が来たときには-likeがどうなるかわかりません。私も試合をしようとしました。ワイルドカードを配列

ファイル名は、REFW10-X86-1709_01-12-2017.wimのようになります。

以下のコードはうまくいきますが、私はそれを自動化したいので、すべてが配列から来ています。それは可能ですか?

Get-ChildItem -Path $OSPathTemp -Recurse | Where { 
    ($_.Name -eq $MoveItem.File) -and 
    ($_.Name -like "*1709*") 
} | Select-Object -ExpandProperty FullName 

$MoveItem.Version1607,1706,1709が含まれています。命名

$MoveItem = @(

[pscustomobject]@{File="REFW10-X86-1709_01-12-2017.wim";Version=1709} 
[pscustomobject]@{File="REFW10-X86-1706_01-12-2017.wim";Version=1706} 

) 
+0

私はあなたと正直に言うつもりです。たぶん早すぎることや何かであるかもしれませんが、あなたが求めていることを正確に理解することはできません。 – EBGreen

+2

私はそれをテストすることはできませんが、 '($ _。Name-like" * $($ MoveItem.Version)* ")'はあなたが望むことをする必要があります。 –

+2

@ JamesC。それは配列では動作しません。 '$ x = 1,2,3,4; "* $($ x)*" 'は' * 1 2 3 4 * 'を出力します。 –

答えて

0

ですから、ハッシュテーブル(または類似)を持つ:

foreach ($MoveItem in $MoveItems) { 
    Get-ChildItem -Path $OSPathTemp -Recurse | Where { 
     ($_.Name -eq $MoveItem.File) -and 
     ($_.Name -like $MoveItem.Version) 
    } | Select-Object -ExpandProperty FullName 
} 

アレイは、次のようになります。私は、最終的な出力は次のようになります。1709で一つだけを選択したいと思います$MoveItem.Fileプロパティがファイル名で、文字列配列の.Versionsプロパティがありますか?

テスト名:REFW10-X86-1709_01-12-2017.wim

Get-ChildItem -Path $OSPathTemp -Recurse | 
    ForEach-Object { 
     If ($_.Name -match '-\d{4}_') { $Version = $Matches[0] } 

     If ($Version -in $MoveItem.Versions -and 
      $_.Name -eq $MoveItem.File) { $_.FullName } 
    } 
関連する問題