У меня есть путь в строке,
"C:\Temp\mybackup.zip"
Я хотел бы добавить временную метку в script, например,
"C:\temp\mybackup 2009-12-23.zip"
Есть ли простой способ сделать это в PowerShell?
У меня есть путь в строке,
"C:\Temp\mybackup.zip"
Я хотел бы добавить временную метку в script, например,
"C:\temp\mybackup 2009-12-23.zip"
Есть ли простой способ сделать это в PowerShell?
Вы можете вставить произвольный код PowerShell script в строку с двумя кавычками, используя подвыражение, например $():
"C:\temp\mybackup $(get-date -f yyyy-MM-dd).zip"
И если вы получаете путь из другого места - уже как строку:
$dirName = [io.path]::GetDirectoryName($path)
$filename = [io.path]::GetFileNameWithoutExtension($path)
$ext = [io.path]::GetExtension($path)
$newPath = "$dirName\$filename $(get-date -f yyyy-MM-dd)$ext"
И если путь происходит из вывода Get-ChildItem:
Get-ChildItem *.zip | Foreach {
"$($_.DirectoryName)\$($_.BaseName) $(get-date -f yyyy-MM-dd)$($_.extension)"}
Вот какой код PowerShell должен работать. Вы можете комбинировать большую часть этого с меньшим количеством строк, но я хотел сохранить его понятным и понятным.
[string]$filePath = "C:\tempFile.zip";
[string]$directory = [System.IO.Path]::GetDirectoryName($filePath);
[string]$strippedFileName = [System.IO.Path]::GetFileNameWithoutExtension($filePath);
[string]$extension = [System.IO.Path]::GetExtension($filePath);
[string]$newFileName = $strippedFileName + [DateTime]::Now.ToString("yyyyMMdd-HHmmss") + $extension;
[string]$newFilePath = [System.IO.Path]::Combine($directory, $newFileName);
Move-Item -LiteralPath $filePath -Destination $newFilePath;
Мне нужно было экспортировать наш журнал безопасности и потребовалось указать дату и время в скоординированном универсальном времени. Это оказалось проблемой для выяснения, но так просто выполнить:
wevtutil export-log security c:\users\%username%\SECURITYEVENTLOG-%computername%-$(((get-date).ToUniversalTime()).ToString("yyyyMMddThhmmssZ")).evtx
Волшебный код - это только эта часть:
$(((get-date).ToUniversalTime()).ToString("yyyyMMddThhmmssZ"))
Использование:
$filenameFormat = "mybackup.zip" + " " + (Get-Date -Format "yyyy-MM-dd")
Rename-Item -Path "C:\temp\mybackup.zip" -NewName $filenameFormat