在powershell中访问foreach中的变量

时间:2014-10-08 17:08:30

标签: powershell

我有一个简单的代码示例,我想循环遍历目录内容:

$path = "C:\Users\BISWAJI\Desktop\Novels"

$content = dir -path $path | where { $_.Mode -match "^d.*" }

foreach ( $item in $content )
{
  "Items under the folder $path\$item are :"
  dir -path "$path\$item" | select name,mode
}

麻烦的是脚本无法读取foreach循环中的变量$ path。任何人都可以给我任何想法吗?这是正常行为吗?

2 个答案:

答案 0 :(得分:0)

您的foreach命令应如下所示。请注意,您缺少用于打印行的echo命令,您必须使用;

分隔不同的命令
foreach ( $item in $content ) {"Items under the folder $path\$item are :"; dir -path "$path\$item" | select name,mode }

您也可以使用ForEach-Object命令行开关

来尝试此操作
dir -path $path | where { $_.Mode -match "^d.*" }|ForEach-Object {Write-Host "Items under the folder $path\$_ are :"; dir -path "$path\$_" | select name,mode}

答案 1 :(得分:0)

我认为这对您有用,但您的代码在我的系统上正常运行。

dir -path "C:\Users\BISWAJI\Desktop\Novels" | foreach { 
 if($_.PSIsContainer) { 
   dir -path $_.Fullname | select name,mode
 }
}