Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PowerShell Foreach循环中正确使用Get Childitem_Powershell - Fatal编程技术网

在PowerShell Foreach循环中正确使用Get Childitem

在PowerShell Foreach循环中正确使用Get Childitem,powershell,Powershell,我想获取一个带有用户名的文本文件,然后搜索特定位置(路径),并返回找到的任何匹配项,将它们输出到日志文件: #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 = @() $head

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

#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 : 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
Get ChildItem:第二个路径片段不能是驱动器或UNC名称。
参数名称:path2
At\\erebus\erebus\U用户$\rraymond1\ps\searchandmatch.ps1:32字符:14

+Get ChildItem我自己刚刚解决了这个问题——问题是我对ForEach的理解以及它能做什么和不能做什么。我认为它能够自行执行获取内容的功能。我所要做的就是添加一行新代码:$Users=Get Content$SourceFile并将循环更改为:foreach($Users中的user)您应该能够回答自己的问题。一旦您拥有15个声誉,您就可以回答自己的问题并接受它。