通过PowerShell Foreach循环正确使用Get-Childitem

时间:2012-05-15 19:38:15

标签: powershell

我想获取带有用户名的文本文件,然后搜索特定位置(UNC路径)并返回找到的所有匹配项,并将它们输出到日志文件中:

#Searches target folder for all folders matching input

$start = (get-date -uformat "%Y-%m-%d_%H%M")
$defaultLogFileName = "folder_matcher" + $start + ".log"

#Log file header

$header = @()
$header += "=============================="
$header += "Search results"
$header += ""
$header += "Execution Start: " + (get-date -uformat "%Y-%m-%d %H%M") + ""
$header += ""

#Get the logfile location
do
{
    $logdir = Read-Host "Enter log directory (or press Enter for default c:\)"
    if ($logdir -eq "")
        {$logfile = ("c:\" + $defaultLogFileName); break;}
    if(Test-Path $logdir)
        {$logfile += ($logdir + "\" + $defaultLogFileName); break;}
    Write-Host -ForegroundColor Red "Directory does not exist"
} while (!(Test-Path $logfile))

$SourceFile = Read-Host "Enter file path"
$SearchValue = Read-host "Enter target directory to sweep"

$header | Out-File -FilePath $logfile

foreach($user in $sourcefile){
    Get-ChildItem $SearchValue -filter $user | Out-file -Append -FilePath $logfile
}

当我尝试在此循环中使用Get-ChildItem时,结果如下:

Get-ChildItem : Second path fragment must not be a drive or UNC name.
Parameter name: path2
At \\erebus\erebus_users$\rraymond1\ps\searchandmatch.ps1:32 char:14
+ Get-ChildItem <<<<  $SearchValue -filter $user | Out-file -Append -FilePath $logfile
+ CategoryInfo          : InvalidArgument: (\\harvard\tsprofiles$:String)
[Get-ChildItem], ArgumentException  + FullyQualifiedErrorId  DirArgumentError,Microsoft.PowerShell.Commands.GetChildItemCommand

我尝试用固定值替换变量(甚至在本地映射UNC路径并尝试以这种方式运行),问题仍然存在。我该如何解决?

0 个答案:

没有答案