You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell获取目录文件数组时无法移除脚本路径问题求解

报错原因
  • PowerShell 中使用@()声明的普通数组为固定长度类型,原生不支持直接删除元素,你尝试删除元素时就会触发固定大小的报错。
  • 原代码中使用字符串替换脚本名获取目录的写法存在兼容性缺陷,若脚本名称修改、或路径中凑巧包含脚本名字符串,会导致目录获取错误。
最优实现方案

直接在遍历文件阶段过滤当前脚本,无需后续删除操作,代码如下:

# 获取当前脚本完整路径
$scriptFullPath = $MyInvocation.MyCommand.Definition
# 提取脚本所在目录路径
$scriptDir = Split-Path -Path $scriptFullPath -Parent
# 直接获取目录下所有文件,过滤脚本自身,生成目标路径数组
$targetFileArray = (Get-ChildItem -Path $scriptDir -File | Where-Object { $_.FullName -ne $scriptFullPath }).FullName

生成的$targetFileArray即为符合要求的数组,遍历可以直接用更简洁的遍历方式:

foreach ($filePath in $targetFileArray) {
    $filePath
}
动态数组修改方案

如果你确实需要对数组做增删操作,可以使用支持动态修改的ArrayList类型替换普通数组:

# 声明动态数组
$dynamicArray = [System.Collections.ArrayList]@()
# 填充元素后可直接调用删除方法移除脚本路径
$dynamicArray.Remove($scriptFullPath)

内容的提问来源于stack exchange,提问作者user16767298

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 15:09:01