#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