Em primeiro lugar, a função split cria um objeto com todas as strings que aparecem entre o caractere de divisão. Você precisa acessar um único item da propriedade usando $variable[x]
, em que x seria a posição do item desejado. No seu caso, você teria que chamar $filename[0]
. (Primeiro item não é 1, começa com 0)
Em segundo lugar, não posso explicar realmente por que, mas se você usar o método string dividido como você fez, cada caractere será tratado como possível delimitador. É por isso que 'pmdasdfgpmd.dmp'.split(".dmp")
retornará asdfg - como se você usasse trim . Mas se você usar a função assim:
'pmdasdfgpmd.dmp' -split".dmp"
retornará o nome do arquivo sem extensão: pmdasdfgpmd
Em terceiro lugar, se você quiser remover uma parte de uma string, você também pode usar o método replace e substituir a string por nada:
ou
'test.dmp'.replace(".dmp","")
ou
'test.dmp' -replace ".dmp"
Mas isso é apenas uma substituição básica de strings no powershell - a maneira mais fácil de obter o nome do arquivo sem extensão é a maneira como o @PetSerAl propôs:
[System.IO.Path]::GetFileNameWithoutExtension($dmpfile)
ou você chama o% p_de% PSFunction e usa o Get-Item
-Property:
(Get-Item $dmpfile).BaseName
Em ambos os casos, a variável $ dmpfile deve conter o caminho completo para o arquivo, não apenas o nome do arquivo.