Ampliando la respuesta de René Nyffenegger, para aquellos que no tienen acceso a la versión 6.x de PowerShell, usamos Split Path, que no prueba la existencia de archivos:
Split-Path "C:\Folder\SubFolder\myfile.txt" -Leaf
Esto devuelve " myfile.txt ". Si sabemos que el nombre del archivo no tiene puntos, podemos dividir la cadena y tomar la primera parte:
(Split-Path "C:\Folder\SubFolder\myfile.txt" -Leaf).Split('.') | Select -First 1
o
(Split-Path "C:\Folder\SubFolder\myfile.txt" -Leaf).Split('.')[0]
Esto devuelve " myfile ". Si el nombre del archivo puede incluir puntos, para estar seguros, podríamos usar lo siguiente:
$FileName = Split-Path "C:\Folder\SubFolder\myfile.txt.config.txt" -Leaf
$Extension = $FileName.Split('.') | Select -Last 1
$FileNameWoExt = $FileName.Substring(0, $FileName.Length - $Extension.Length - 1)
Esto devuelve " myfile.txt.config ". Aquí prefiero usar Substring () en lugar de Replace () porque la extensión precedida por un punto también podría ser parte del nombre, como en mi ejemplo. Al usar Substring, devolvemos el nombre del archivo sin la extensión solicitada.