Powershell备份脚本创建目录

Powershell备份脚本创建目录,powershell,Powershell,我在备份脚本中有这种类型的代码 while($true){ $time = Get-Date -Format HH:mm:ss $dateCheck = (Get-Date).AddDays(-0).ToString('dd-MM-yyyy') [int]$check = $check Get-ChildItem 'C:\fleet-integrator-installer-DHL2\work\matilda\14\done' -File | Sort-Object -Property

我在备份脚本中有这种类型的代码



while($true){
$time = Get-Date -Format HH:mm:ss
$dateCheck = (Get-Date).AddDays(-0).ToString('dd-MM-yyyy')
[int]$check = $check


Get-ChildItem 'C:\fleet-integrator-installer-DHL2\work\matilda\14\done' -File |
Sort-Object -Property CreationTime -Descending |
Select-Object -First 1 |
Copy-Item -Destination \\Ict_nas\dhl\$dateCheck -Force

if($time -eq ('23:59:00')){
$check = $check - $check
}

if($time -eq ('23:59:30') -and $check -eq 0){
New-Item -ItemType "directory" -Path "\\Ict_nas\dhl" -Name $dateCheck | Out-Null
$check++
}

if($time -eq ('00:00:00')){
$fileCount = ( Get-ChildItem C:\fleet-integrator-installer-DHL2\work\matilda\14\done ).Count;
$EmailFrom = "..."
$EmailTo = "..."
$Subject = "Backup DHL Integrator -> IT NAS"
$Body = "The backup was succesful, $fileCount files are copied to the NAS"
$SMTPServer = "smtp.gmail.com"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("", "")
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
Get-ChildItem -Path C:\fleet-integrator-installer-DHL2\work\matilda\14\done -Include *.* -File -Recurse | foreach { $_.Delete()}
}




}
它正在NAS上自动创建一个日期为今天的文件夹

当我单独运行代码时,它工作正常,但在脚本中,它只是创建了一个日期为今天的文件

有人给小费吗


谢谢

您正在创建目录之前复制到目录:

Copy-Item -Destination \\Ict_nas\dhl\$dateCheck -Force
由于目录不存在(尚未),因此目标被解释为文件名。因此,源文件被复制到该名称的文件中

我不确定您的
$check
逻辑应该做什么,但基本上您有两个选项:

A)在复制到目录之前,先创建目录

New-Item "\\Ict_nas\dhl\$dateCheck" -Type Directory | Out-Null
Get-ChildItem 'C:\fleet-integrator-installer-DHL2\work\matilda\14\done' -File |
  sort CreationTime -Descending | select -First 1 |
  Copy-Item \\Ict_nas\dhl\$dateCheck
B)指定用于复制的完整文件路径

Get-ChildItem 'C:\fleet-integrator-installer-DHL2\work\matilda\14\done' -File |
sort CreationTime -Descending | select -First 1 | foreach {
    Copy-Item $_.FullName "\\Ict_nas\dhl\$dateCheck\$($_.Name)"
}

在创建目录之前,您正在复制到该目录:

Copy-Item -Destination \\Ict_nas\dhl\$dateCheck -Force
由于目录不存在(尚未),因此目标被解释为文件名。因此,源文件被复制到该名称的文件中

我不确定您的
$check
逻辑应该做什么,但基本上您有两个选项:

A)在复制到目录之前,先创建目录

New-Item "\\Ict_nas\dhl\$dateCheck" -Type Directory | Out-Null
Get-ChildItem 'C:\fleet-integrator-installer-DHL2\work\matilda\14\done' -File |
  sort CreationTime -Descending | select -First 1 |
  Copy-Item \\Ict_nas\dhl\$dateCheck
B)指定用于复制的完整文件路径

Get-ChildItem 'C:\fleet-integrator-installer-DHL2\work\matilda\14\done' -File |
sort CreationTime -Descending | select -First 1 | foreach {
    Copy-Item $_.FullName "\\Ict_nas\dhl\$dateCheck\$($_.Name)"
}

Does
md
代替
New Item
工作??将尝试,因为如果我在新选项卡中运行脚本的该部分,它工作正常…Does
md
代替
New Item
工作??将尝试,因为如果我在新选项卡中运行脚本的该部分,它工作正常。。。