首页 > 解决方案 > ForEach 循环使我的变量为空

问题描述

完全是 Powershell 的新手,所以我提前为这个小组中的大多数人可能容易完成的任务道歉。

$File = Get-ChildItem "C:\location"
$ACLs= foreach ($item in $File) {get-acl $item.FullName}
$foldernames = $acls.pschildname
$ACLNames = $acls.Access.IdentityReference

$ACLNamesNew = foreach ($ACLName in $ACLNames) {
   $ACLNameString = $ACLname.Value.ToString()
   $ACLNameFormatted = $ACLNameString.Split("\")[0]
}

最终目标是获取字符串,仅从字符串中修剪域/组名称,仅提取唯一值,并将剩下的内容写入变量 $ACLNames。甚至没有尝试过滤唯一性,因为即使上述内容也将 $ACLNamesNew 留空。我的测试中的 foreach 接缝听起来不错,但它并没有像我预期的那样将值写入变量。

标签: powershellforeach

解决方案


如果你想收集循环的结果,你必须在循环中输出一些东西。这应该足够了..如果我没看错的话

$fileList = Get-ChildItem 'C:\location'
$ACLList = foreach ($file in $fileList) { get-acl $file.FullName }
$ACLNameList = $ACLList.Access.IdentityReference

$ACLNameNewList = foreach ($ACLName in $ACLNameList) {
    $ACLname.Value.ToString().Split("\")[0]
}
$ACLNameNewList

推荐阅读