Get-ChildItem 找不到一个特定的目录?
Get-ChildItem can't find one specific directory?
我正在编写一个 PowerShell 脚本,该脚本应该查看一个目录,按名称(编号名称)对子项进行排序,并检查其中是否有特定文件。如果有,它应该被复制到某个地方,如果没有它应该查看下一个。到目前为止,这是我的代码:
#[...]
$notExist = $true
#$LatestCiClient = [some directory from earlier in the script]
$buildDirectories = Get-ChildItem -Path $LatestCiClient | Sort Name -Descending
while ($notExist) {
$currentDir = $buildDirectories | Select-Object -First 1
$assembliesDir = Get-ChildItem -Path $currentDir.FullName -Include Desktop-Assemblies #Breakpoint
$script:exe = Get-ChildItem -Path $assembliesDir -Include SomeFile.exe | Select -First 1
if ($Script:exe.Exists) {
$notExist = $false
} else {
if ($buildDirectories.Count -gt 0) {
$buildDirectories = $buildDirectories | Select -Skip 1
} else {
$script:NoneFound = $true
$script:notExist = $false
}
}
}
#[more Powershell that is supposed to copy $script:exe]
我正在获取编号的目录 ($buildDirectories
),在调试器中我看到了整个列表。
我输入 while block (breakpoint is set at "#Breakpoint"), select the first directory to check (
$currentDir`,它又在那里并且是正确的)并查找名为 "Desktop-Assemblies" 的文件夹。
我正在查看它,在资源管理器中,现在,文件夹在那里,它已被填充,它没有隐藏(它是只读的,但那应该无关紧要?),我没有做任何事情我没有在脚本中做过几次 - 什么都没有。 $assembliesDir
为空。
我尝试使用 "Desktop-Assemblies",我尝试使用 Desktop*,我尝试不使用 -Include
。如果我使用 $currentDir
它说
Cannot find path [WeirdPath] because it doesn't exist
奇怪的路径是我的 $currentDir
的文件夹名称,但路径的其余部分是 C:\Users\MyUserName.
如果我使用 $currentDir.FullName
它会找到所有目录,包括我要查找的目录。我应该补充一点,正在搜索的整个目录都在另一台计算机上,它是一个网络驱动器。
你用过这个吗?
Get-ChildItem -Path $currentDir.FullName | Where-Object {$_.Name -eq 'Desktop-Assemblies'}
我正在编写一个 PowerShell 脚本,该脚本应该查看一个目录,按名称(编号名称)对子项进行排序,并检查其中是否有特定文件。如果有,它应该被复制到某个地方,如果没有它应该查看下一个。到目前为止,这是我的代码:
#[...]
$notExist = $true
#$LatestCiClient = [some directory from earlier in the script]
$buildDirectories = Get-ChildItem -Path $LatestCiClient | Sort Name -Descending
while ($notExist) {
$currentDir = $buildDirectories | Select-Object -First 1
$assembliesDir = Get-ChildItem -Path $currentDir.FullName -Include Desktop-Assemblies #Breakpoint
$script:exe = Get-ChildItem -Path $assembliesDir -Include SomeFile.exe | Select -First 1
if ($Script:exe.Exists) {
$notExist = $false
} else {
if ($buildDirectories.Count -gt 0) {
$buildDirectories = $buildDirectories | Select -Skip 1
} else {
$script:NoneFound = $true
$script:notExist = $false
}
}
}
#[more Powershell that is supposed to copy $script:exe]
我正在获取编号的目录 ($buildDirectories
),在调试器中我看到了整个列表。
我输入 while block (breakpoint is set at "#Breakpoint"), select the first directory to check (
$currentDir`,它又在那里并且是正确的)并查找名为 "Desktop-Assemblies" 的文件夹。
我正在查看它,在资源管理器中,现在,文件夹在那里,它已被填充,它没有隐藏(它是只读的,但那应该无关紧要?),我没有做任何事情我没有在脚本中做过几次 - 什么都没有。 $assembliesDir
为空。
我尝试使用 "Desktop-Assemblies",我尝试使用 Desktop*,我尝试不使用 -Include
。如果我使用 $currentDir
它说
Cannot find path [WeirdPath] because it doesn't exist
奇怪的路径是我的 $currentDir
的文件夹名称,但路径的其余部分是 C:\Users\MyUserName.
如果我使用 $currentDir.FullName
它会找到所有目录,包括我要查找的目录。我应该补充一点,正在搜索的整个目录都在另一台计算机上,它是一个网络驱动器。
你用过这个吗?
Get-ChildItem -Path $currentDir.FullName | Where-Object {$_.Name -eq 'Desktop-Assemblies'}