在Powershell中选择对象的TypeName

时间:2017-03-24 18:10:20

标签: powershell

我正在制作一份监控一系列数据共享的ACL的报告,当我运行我的脚本时,我会在屏幕截图中看到下面的结果。如您所见,Path: \\rest_of_path显示在每个对象上方。

这看起来就像我使用Get-Member时,TypeName:显示在该位置。我希望能够获取Path值并将其添加到我的报告中,以便我可以在PowerShell控制台中生成类似于输出的内容。我怎么能这样做?

Screenshot

以下是代码:(我在这里使用NTFSSecurity模块,https://blogs.technet.microsoft.com/heyscriptingguy/2014/11/23/weekend-scripter-manage-ntfs-inheritance-and-use-privileges/

import-module -Name \\storagesrvr\it\!scripts\ntfssecurity -verbose

$shares = get-content \\testserver\c$\tmp\share.list.txt

$results = @()

foreach($share in $shares){
    $ntfs = Get-NTFSAccess $share
    $results += $ntfs
}

1 个答案:

答案 0 :(得分:1)

看起来Path是来自FullNameInheritanceEnabled的格式化组合

$results | ForEach-Object {
    $_ | Select-Object @{
        Name="Path"
        Expression={"$($_.Fullname) $(if(!($_.InheritanceEnabled)) {'(Inheritance Disabled)'})"}
    }
}

或者将计算出的属性直接放入$results

import-module -Name \\storagesrvr\it\!scripts\ntfssecurity -verbose
$shares = get-content \\testserver\c$\tmp\share.list.txt
$results = foreach($share in $shares){
    $ntfs = Get-NTFSAccess $share |
        select *,@{n="Path";e={"$($_.Fullname) $(if(($_.InheritanceEnabled)) {'(Inheritance Disabled)'})"}}
}