【发布时间】:2022-01-04 04:23:05
【问题描述】:
我想映射一个网络。如果映射失败,我需要使用重试。最大重试后,它将失败并继续另一个进程。如果映射通过,那么也继续另一个过程。我已经尝试过这种方式,但似乎重试不起作用。一旦映射失败,不做网络映射过程,只处理循环。 任何人都可以给我一个想法。
$Stoploop = $false
[int]$Retrycount = "0"
do {
try {
$net = New-Object -ComObject WScript.Network
$net.MapNetworkDrive("$Path", "\\$IP\$Folder", $False, "$Server\$user", "$pass")
$Message = "NetWork Mapping : " + $Path + " Mount Successful"
Write-Host $Message
$Stoploop = $true
CaptureLog "$Message`n "
}
catch {
if ($Retrycount -eq 15){
$Message_1 = "Could not mount after 15 retries." + " $_"
$Stoploop = $true
CaptureLog $Message_1
ErrorHandling $Message_1
}
else {
$Message = "NetWork Mapping : " + $Path + " Trying to mount..."
Write-Host $Message
CaptureLog $Message
Start-Sleep -Seconds 3
$Retrycount = $Retrycount + 1
}
}
}
while ($Stoploop -eq $false) {
}
非常感谢您的建议。赞赏!
【问题讨论】:
-
您知道 PowerShell 有一个专用的 cmdlet 用于映射网络驱动器,称为
New-PSDrive? -
另外,不要在没有释放它们的情况下循环创建无数 ComObjects。最终,您将耗尽可用内存..
标签: powershell loops mapping retry-logic