我正在编写一个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 *,没有使用-Include
。如果我使用$currentDir
会说
找不到路径[WeirdPath],因为它不存在
奇怪的路径是我的$currentDir
的FolderName,但其余路径是C:\ Users \ MyUserName。
如果我使用$currentDir.FullName
,它将找到所有目录,包括我要查找的目录。我可能应该补充一点,正在搜索的整个目录在另一台计算机上,它是网络驱动器。
答案 0 :(得分:1)
您使用了吗?
Get-ChildItem -Path $currentDir.FullName | Where-Object {$_.Name -eq 'Desktop-Assemblies'}