如何循环使用powershel脚本?它将本地NTUSER.DAT复制到文件服务器,我知道本地NTUSER.DAT文件可能被操作系统锁定,因此我的COPY可能会失败。我需要它尝试运行脚本5次,直到它最终可能失败。我希望在第5次尝试NTUSER.DAT文件不再被操作系统使用。
start-sleep -s 50
$time = Get-Date -Format "hh:mm"
Add-Content -Path "C:\Temp\time.txt" -Value "Script ran at $time"
$FQDN = "$Env:UserDomain"
$User = Get-WmiObject -Class Win32_NetworkLoginProfile | Sort-Object -Property LastLogon -Descending | Select-Object -Property * -First 1 | Where-Object {$_.LastLogon -match "(\d{14})"} | Foreach-Object { New-Object PSObject -Property @{ Name=$_.Name.TrimStart("$FQDN\") }} | Select -ExpandProperty Name
copy-item -path C:\Users\$User\NTUSER.DAT -destination \\10.10.10.10\Profiles$\$user.V2\ -force
copy-item -path C:\Users\$User\NTUSER.DAT -destination \\10.10.10.10\Profiles$\$user.V3\ -force
答案 0 :(得分:3)
不是最好但有效:)
$ErrorActionPreference = 'SilentlyContinue'
$counter = 0
Copy-Item SOURCE DEST
if (!($?))
{
while (!($?))
{
$counter++
Start-Sleep -Seconds (Get-Random -Minimum 30 -Maximum 90)
Copy-Item SOURCE DEST
if ($counter -eq 4)
{
"Couldn't Copy File"
return
}
elseif($?){"File Copied at $counter try"}
}
}
else { "File Copied" }
答案 1 :(得分:1)
您可以在powershell中使用robocopy代替copy-item。
& robocopy $source $destination /COPYALL /R:5
R:5 =重试5次
W:50 =重试之间的等待时间 - 默认为30秒
(如果你使用那些退出代码有点不同)
编辑:正如kevmar在评论中指出的那样,我错过了对不起!