В пакетном режиме %~dpn0
возвращает диск, путь и имя текущего выполняемого сценария.
Чтобы сделать то же самое в скрипте PowerShell, вы можете использовать $MyInvocation.MyCommand.Definition
например:
$scriptPathAndName = $MyInvocation.MyCommand.Definition
write-host $scriptPathAndName
Чтобы получить только путь к сценарию, вы можете использовать:
$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
write-host $scriptPath
(Примечание: в Powershell v3+ вы можете получить путь к скрипту (без имени), ссылаясь на предопределенную переменную $PSScriptRoot
)
Чтобы получить только название скрипта:
$scriptName = split-path -leaf $MyInvocation.MyCommand.Definition
write-host $scriptName
Дополнительная информация о параметрах Split-Path: https://technet.microsoft.com/en-us/library/hh849809.aspx