Você precisa do cmdlet Select-String
, que é, por padrão, com alias como sls
. Esse cmdlet permite que você corresponda a uma expressão regular e, em seguida, extraia a string correspondente. O comando completo é algo assim:
$(sls 'Logged into app\prog[0-9]+' 'abc.txt' -all).matches | foreach { $fn=$_.value.split('\')[1]; [System.IO.File]::Create($fn).close(); $fn }
Basicamente, para cada instância da string Logged into app\progX
(onde X é um ou mais dígitos) que encontra no arquivo, ele leva o material para a direita do \
até atingir o final dos dígitos. , cria um arquivo com esse nome, fecha o arquivo sem gravar nele e ecoa esse nome para stdout (você pode remover a última parte se quiser).