PowerShell脚本Get-ChildItem错误读取本地目录而非映射共享目录问题
PowerShell脚本误操作本地目录的问题修复
问题原因
- 用
New-PSDrive创建的Q盘默认仅在当前PowerShell会话内可见,如果脚本在非交互式环境(比如任务计划)运行,或者映射失败时,Get-ChildItem "Q:\"会找不到目标路径,自动 fallback到当前工作目录,导致误移本地文件。 - 你添加的
Remove-Item属于多余操作,跨卷(共享卷→本地卷)执行Move-Item时,PowerShell会直接将文件从源位置移动到目标位置,原文件会被自动删除,之前的“原文件未删除”大概率是因为Q盘映射失败,根本没操作到共享目录。
修复后的脚本
$cnt = 4 $connected = $false $targetShare = "\\192.168.1.199\shared" $localDest = "C:\Server_Files" while ($cnt -gt 0) { if (Test-Connection 192.168.1.199 -Quiet -Count 1) { if (!$connected) { # 创建持久化映射,确保在会话外也能访问;捕获映射失败错误 try { New-PSDrive -Name "Q" -Root $targetShare -PSProvider FileSystem -Persist -ErrorAction Stop Write-Host "成功映射Q盘到共享目录" } catch { Write-Host "Q盘映射失败:$_" $connected = $false start-sleep -Seconds 60 $cnt-- continue } } # 先检查Q盘是否存在,避免 fallback到当前目录 if (Test-Path "Q:\") { Get-ChildItem -Path "Q:\" -Recurse -File | ForEach-Object { $destPath = Join-Path -Path $localDest -ChildPath $_.Name # 处理重名文件:目标已存在则添加时间戳后缀 if (Test-Path $destPath) { $fileName = $_.BaseName $extension = $_.Extension $timestamp = Get-Date -Format "yyyyMMddHHmmss" $destPath = Join-Path -Path $localDest -ChildPath "$fileName`_$timestamp$extension" } try { Move-Item -Path $_.FullName -Destination $destPath -Force -ErrorAction Stop Write-Host "成功移动文件:$($_.FullName) → $destPath" } catch { Write-Host "移动文件失败:$_" } } } else { Write-Host "Q盘不存在,跳过文件移动操作" } $connected = $true } else { if ($connected) { try { Remove-PSDrive -Name "Q" -Force -ErrorAction Stop Write-Host "已断开Q盘映射" } catch { Write-Host "断开Q盘映射失败:$_" } } $connected = $false } start-sleep -Seconds 60 $cnt-- } # 脚本结束后清理映射 if ($connected) { try { Remove-PSDrive -Name "Q" -Force -ErrorAction Stop Write-Host "脚本结束,已断开Q盘映射" } catch { Write-Host "脚本结束时断开Q盘映射失败:$_" } }
关键修改说明
- 给
New-PSDrive添加-Persist参数,让Q盘映射在系统层面可见,避免非交互式环境下无法访问。 - 每次操作前用
Test-Path "Q:\"检查映射有效性,防止找不到路径时误操作本地目录。 - 移除多余的
Remove-Item,跨卷Move-Item会自动删除原文件。 - 增加重名文件处理逻辑,避免因目标目录有同名文件导致脚本中断。
- 添加
try/catch错误捕获和日志输出,方便排查映射或移动失败的原因。 - 给
Test-Connection加上-Count 1,减少网络检测等待时间。
内容的提问来源于stack exchange,提问作者user720856
相关产品推荐
相关产品推荐

