Alguma maneira de encurtar essa linha do Powershell? (forma abreviada)

Alguma maneira de encurtar essa linha do Powershell? (forma abreviada)

Só estou olhando para ver se alguém sabe uma maneira de encurtar essa linha do PowerShell:

gci -Recurse -path $temp | ? {(".jpg",".png" -eq $_.extension -and $_ -match 'this' -and $_ -match "that")} | mi -Destination ($Images) -Force

A linha está neste código:

$Temp = "F:\Temp-Images"
$Images = "F:\Images\"
gci -Recurse -path $Temp | ? {(".jpg",".png" -eq $_.extension -and $_ -match 'this' -and $_ -match "that")} | mi -Destination ($Images) -Force

O script deve procurar em uma pasta ($Temp), encontrar qualquer arquivo com a extensão .jpgou.png, E que têmambosas palavras "isto" e "aquilo" no nome do arquivo. Se encontrar uma correspondência, move o arquivo para a pasta de destino ($Imagens)

Portanto, se houver um arquivo em "F:\Temp-Images" chamado "this-that.png", ele será movido para "F:\Images\"

Sou novo no PowerShell, então juntei o código acima por meio de pesquisas no Google. Não sei se minha sintaxe é ótima ou não, mas está funcionando para mim. Só estou me perguntando se existe uma maneira de encurtar o código. Por exemplo, existe uma maneira de encurtar isso?:

-and $_ -match 'this' -and $_ -match "that"

Obrigado!

Responder1

Operar a descoberto o máximo possível é enigmático ;-)

$Temp = "F:\Temp-Images\"
$Images = "F:\Images\"
ls $Temp -R -I *.jpg,*.png|?{$_.Name -match 'this.*that|that.*this'}|mi -D ($Images) -Fo

Para testar eu acrescentaria -WhatIfou -Confirmao Move-Item

informação relacionada