Имена временных файлов в PowerShell методами .NET Framework

 

 PowerShellсниппет

Когда требуется создать или получить имя для временного файла или директории в PowerShell скрипте, возможно облегчить себе работу и использовать доступные методы .NET Framework.

[System.IO.Path]::GetTempFileName()

Метод создаёт пустой временный файл с уникальным именем и возвращает полный путь к нему. Прочитать подробнее о методе [System.IO.Path]::GetTempFileName() можно в официальной справке Microsoft.

$tmpFile = [System.IO.Path]::GetTempFileName()
Set-Content -Path $tmpFile 'Hello, world!'
Get-Content -Path $tmpFile

[System.IO.Path]::GetRandomFileName()

Метод возвращает случайную строку, которая может быть использована в качестве имени файла или директории. Прочитать подробнее о методе [System.IO.Path]::GetRandomFileName() можно в официальной справке Microsoft.

$tmpFldr = [System.IO.Path]::GetRandomFileName()
$tmpFile = [System.IO.Path]::GetRandomFileName()
$tmpPath = [System.IO.Path]::Combine($env:temp, $tmpFldr, $tmpFile)

Использование рассмотренных методов .NET Framework даёт возможность очистить и сделать понятнее код скриптов, убрав конструкции, создающие случайные имена временным файлам и директориям, подобные следующим.

# Использование случайного числа
$tmpFile = "$env:temp\tmp$(Get-Random).tmp"

# Использование GUID
$tmpFile = "$env:temp\tmp$([Guid]::NewGuid().toString()).tmp"

# Использование метки времени с милисекундами
$tmpFile = "$env:temp\tmp$(Get-Date -format yyyy-MM-dd_HHmmss_ffff).tmp"