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
工作??将尝试,因为如果我在新选项卡中运行脚本的该部分,它工作正常…Doesmd
代替New Item
工作??将尝试,因为如果我在新选项卡中运行脚本的该部分,它工作正常。。。