回答:
$()などの部分式を使用して、二重引用符で囲まれた文字列に任意のPowerShellスクリプトコードを挿入できます。
"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"))
hh
12時間制ですが、tt
これがないと役に立ちません。使用HH
すると24時間利用できます。私はどちらhhmmsstt
かをお勧めしますHHmmss
hh
しましたHH
。それがほとんどの人が望むことだと思います。
上記のスクリプトをありがとう。ファイルを追加するための1つの小さな変更が正しく終了しています。これを試して ...
$filenameFormat = "MyFileName" + " " + (Get-Date -Format "yyyy-MM-dd") **+ ".txt"**
Rename-Item -Path "C:\temp\MyFileName.txt" -NewName $filenameFormat
使用する:
$filenameFormat = "mybackup.zip" + " " + (Get-Date -Format "yyyy-MM-dd")
Rename-Item -Path "C:\temp\mybackup.zip" -NewName $filenameFormat
$filenameFormat = "mybackup $(Get-Date -Format "yyyy-MM-dd").zip"
それがOPフォーマットと一致しているため
get-date -f yyyy-MM-dd
私はそれがだことを認識する前に一瞬停止作られていない-f
オペレータが、ために短い形式-Format
のパラメータ。どうやらそれは場違いに見えました:-)