PowerShell получает каталог программы

#powershell #directory

#powershell #каталог

Вопрос:

Недавно я написал сценарий и хочу поделиться им со своими коллегами. Это простая программа копирования и вставки, которая создает лог-файлы после каждого запуска. Проблема в том, что я использовал это: start transcript -Path C:Users…

Программа работает нормально, но если кто-то другой запустит скрипт, он не сможет создавать лог-файлы, поскольку каталог является копией моего.

Теперь к моему вопросу: есть ли в любом случае, что программа может найти каталог, в котором каждый пользователь сохранил сценарий, чтобы он мог создать подпапку в этом каталоге, а затем сбросить туда журналы?

Заранее благодарю вас

Ответ №1:

Путь к папке, содержащей выполняемый в данный момент скрипт, можно получить с помощью $PSScriptRoot автоматической переменной:

 Start-Transcript -OutputDirectory $PSScriptRoot
 

Ответ №2:

Вот как я записываю сеансы PowerShell с помощью командлета Start-Transcript. Он создает файл журнала, из которого запускается скрипт.

 #Log File Paths
$Path = Get-Location
$Path = $Path.ToString()
$Date = Get-Date -Format "yyyy-MM-dd-hh-mm-ss"
$Post = ""   (Get-Date -Format "yyyy-MM-dd-hh-mm-ss")   "-test.log"

$PostLog = $Path   $Post
$PostLog = $PostLog.ToString()

#Start Transcript
Start-Transcript -Path $PostLog -NoClobber -IncludeInvocationHeader

#Your Script
Get-Date

#End Transcript
Stop-Transcript -ErrorAction Ignore