Ответ 1
В PowerShell 3 есть автоматическая переменная $PSScriptRoot
:
Содержит каталог, из которого выполняется script.
В Windows PowerShell 2.0 эта переменная действительна только в script модулях (.psm1). Начиная с Windows PowerShell 3.0, он действителен во всех сценариях.
Не обманывайте себя плохой формулировкой. PSScriptRoot
- это каталог текущего файла.
В PowerShell 2 вы можете сами вычислить значение $PSScriptRoot
:
# PowerShell v2
$PSScriptRoot = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition