Em lote, %~dpn0
retorna o Drive, o Caminho e o Nome do script atualmente em execução.
Para fazer o mesmo em um script do PowerShell, você pode usar $MyInvocation.MyCommand.Definition
.
por exemplo:
$scriptPathAndName = $MyInvocation.MyCommand.Definition
write-host $scriptPathAndName
Para obter apenas o caminho para o script, você pode usar:
$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
write-host $scriptPath
(Nota: no Powershell v3 + você pode obter o caminho do script (sem o nome) referenciando a variável predefinida $PSScriptRoot
)
Para obter apenas o nome do script:
$scriptName = split-path -leaf $MyInvocation.MyCommand.Definition
write-host $scriptName
Mais informações sobre as opções do Split-Path: link