使用Get-Date创建目录正在创建子文件夹?

时间:2017-03-23 22:26:32

标签: powershell

只是一个小问题,我可能会错过一些非常简单的事情 我已经设置了一个脚本,只是为了让一些文件夹成为更大脚本的一部分 我试图设置它,以便在运行脚本时创建一个新目录,其日期为:

$Date = ((Get-Date).ToShortDateString())
$CompileFolder = "C:\Registry_Export\PostInfection\$Date\Compiled Postinfection"
New-Item -path $CompileFolder -ItemType Directory

脚本按预期工作(上面的部分只是脚本中的一部分)
但是,当生成目录时,它们创建子目录而不是仅创建一个目录。

例如23/03/2017应该创建一个名为23/03/2017的文件夹 然而,它正在建立一个文件夹结构:

C:\ Registry_Export \ PostInfection \ 23 \ 03 \ 2017 \编译后的感染
我明白这是因为日期因为日期而生成,但是想知道是否有一种简单的方法来纠正这个

谢谢

2 个答案:

答案 0 :(得分:2)

/是NTFS中的非法文件名字符(并且,通过扩展,也是非法目录名称字符)。

我建议您为日期字符串使用不同的分隔符,例如-.,或者只是完全省略分隔符。要使用自定义格式,您可以使用ToString()-f string format operatorGet-Date -Format

# using hyphens (23-07-2017)
$Date = '{0:dd-MM-yyyy}' -f (Get-Date)

# using dots (23.07.2017)
$Date = (Get-Date).ToString('dd.MM.yyyy')

# using no separator (23072017)
$Date = Get-Date -Format ddMMyyyy

答案 1 :(得分:1)

补充Mathias R. Jessen's helpful answer

另一种方式:任何\ /字符。在传递给New-Item -ItemType Directory的名称中被解释为路径分隔符分隔多个目录名称。

通常,请考虑使用 culture-invariant sortable 字符串格式,例如s standard format string提供的格式,该格式基于ISO 8601标准:

> (Get-Date -Format s) -replace 'T.*'
2017-03-23

-replace 'T.*'部分只是缩短了时间部分。