变量输出重复
variable outputs duplicates
这是我运行遇到的情况。
我有一个包含用户配置文件的共享文件夹。一些配置文件有一个像这样的文件夹 username.text1.v2 其他人有 username.text2.v2
我正在尝试编写一个能够区分两个文件夹之间差异的 powershell 脚本...这是我的代码
$ParentDir = Get-ChildItem "\blah\profiles" | Where-Object {$_.PSIsContainer -eq $True}
ForEach ($SubDir in $ParentDir)
{
#$SubDirName = $SubDir.Name
If ($SubDir.Name -like "*text1*")
{
$firstFolder = $SubDir.Name
}
If ($SubDir.Name -like "*text2*")
{
$secondFolder = $SubDir.Name
}
$secondFolder
}
当我输出代码时,我得到了所有的文件夹,但是同一个文件夹有几个重复的,三重的甚至四重的,而且是随机的。有些文件夹出现一次,有些文件夹出现多次。我不确定为什么它以这种方式输出,因为实际目录中没有任何重复项。
我似乎无法弄清楚为什么会这样?提前致谢!
看看你的循环中发生了什么。让我们假设以下文件夹结构:
- 文本 1
- 文本 2
- 文本3
使用您的脚本将在您的循环中发生以下情况:
- 循环 运行,文件夹文本 1
$firstfolder 获取字符串 "Text1"
$secondfolder 未初始化
输出什么也没有,因为 $secondfolder 是 "empty"
- 循环 运行,文件夹文本 2
$firstfolder 仍然包含来自第一个循环 运行
的字符串 "Text1"
$secondfolder 获取字符串 "Text2"
输出将是 Text2
- 循环 运行,文件夹文本 3
$firstfolder 仍然包含来自第一个循环 运行
的字符串 "Text1"
$secondfolder 仍然包含来自第二个循环 运行
的字符串 "Text2"
输出将是 Text2
要摆脱这种行为,您应该 initialize/clear 您的变量,一些方法可以做到这一点:
$firstfolder = ""
$secondfolder = $null
Clear-Variable -Name $thirdfolder
这是我运行遇到的情况。
我有一个包含用户配置文件的共享文件夹。一些配置文件有一个像这样的文件夹 username.text1.v2 其他人有 username.text2.v2
我正在尝试编写一个能够区分两个文件夹之间差异的 powershell 脚本...这是我的代码
$ParentDir = Get-ChildItem "\blah\profiles" | Where-Object {$_.PSIsContainer -eq $True}
ForEach ($SubDir in $ParentDir)
{
#$SubDirName = $SubDir.Name
If ($SubDir.Name -like "*text1*")
{
$firstFolder = $SubDir.Name
}
If ($SubDir.Name -like "*text2*")
{
$secondFolder = $SubDir.Name
}
$secondFolder
}
当我输出代码时,我得到了所有的文件夹,但是同一个文件夹有几个重复的,三重的甚至四重的,而且是随机的。有些文件夹出现一次,有些文件夹出现多次。我不确定为什么它以这种方式输出,因为实际目录中没有任何重复项。
我似乎无法弄清楚为什么会这样?提前致谢!
看看你的循环中发生了什么。让我们假设以下文件夹结构:
- 文本 1
- 文本 2
- 文本3
使用您的脚本将在您的循环中发生以下情况:
- 循环 运行,文件夹文本 1
$firstfolder 获取字符串 "Text1"
$secondfolder 未初始化 输出什么也没有,因为 $secondfolder 是 "empty" - 循环 运行,文件夹文本 2
$firstfolder 仍然包含来自第一个循环 运行
的字符串 "Text1" $secondfolder 获取字符串 "Text2" 输出将是 Text2 - 循环 运行,文件夹文本 3
$firstfolder 仍然包含来自第一个循环 运行
的字符串 "Text1" $secondfolder 仍然包含来自第二个循环 运行
的字符串 "Text2" 输出将是 Text2
要摆脱这种行为,您应该 initialize/clear 您的变量,一些方法可以做到这一点:
$firstfolder = ""
$secondfolder = $null
Clear-Variable -Name $thirdfolder