获得许多目录的有效用户权限

时间:2019-03-05 12:25:13

标签: powershell scripting

通常$Plist将是一个数组,但是例如,我们只使用一个目录。

我的问题是我不能使用$ids var。我不知何故无法读出数据,也无法绕过它:

Get-ADGroup -Identity $id -Properties member | Select-Object -ExpandProperty member

我需要每个目录的用户名及其组名。

赞:Path GroupName UserList

有人可以帮忙吗?也许调整我​​的代码或进行类似的操作:)

$plist = "\\Server\Share"
$FList   = foreach($dir in $Plist)
{
    Resolve-Path -Path $dir
    Get-Acl -Path $dir -Filter Access | Select-Object -ExpandProperty Access | Where-Object {$_.IdentityReference -like "Domain\*"} | Select-Object IdentityReference
    Get-Item $dir | select FullName
}

$Flist | ft FullName, IdentityReference

$identity = $Flist.IdentityReference | out-string
$ids = foreach($ident in $identity)
{
    $ident = $ident.Replace("Domain\","")
    $ident    
}

foreach($id in $ids)
{
    $id
    Get-ADGroup -Identity $id -Properties member | Select-Object -ExpandProperty member
}

2 个答案:

答案 0 :(得分:1)

不要在脚本中稍后使用的值上使用 class FirstActivity extends Component { static navigationOptions = { title: 'Main Screen' } constructor(props) { super(props) this.state = {number: 0} } Send_Data_Function = () => { this.props.navigation.navigate('Second', { no: this.state.number, }); } render() { return ( <NumericInput minValue = {0} initValue={this.state.number} value={this.state.number} onChange={value=> this.setState({number: value})}/> </View> <Text style={styles.TextStyle}> NEXT </Text> </TouchableOpacity>/> )} class SecondActivity extends Component{ static navigationOptions = { title: "Second Activity" }; render() { return ( <View style= {styles.MainContainer}> <Text style={styles.textStyle}> 1 = {this.props.navigation.state.params.no} </Text> </View> )} } const AppNavigator = createStackNavigator({ First : {screen: FirstActivity}, Second : {screen: SecondActivity} }); export default createAppContainer(AppNavigator); ft)或Format-Table

Out-String

您还可以使用$ids = foreach($ident in $Flist.IdentityReference){ "$ident".Replace('Domain\','') } 运算符一次性删除所有用户名中的域前缀:

-replace

答案 1 :(得分:0)

最终脚本是这样的,适用于可能需要类似内容的人们。因此,您可以读出有效权限并显示授予权限的组的组成员。

$ErrorActionPreference = "SilentlyContinue"
$Path   = "\\Server\Share\Logs\"
$Log    = $Path + "Effective_Permissions" + ".log"
$PPath = Read-Host "Enter Path to scan"
$plist = Get-Childitem -Path $PPath -Recurse | ?{ $_.PSIsContainer } | Select-Object FullName


foreach($Dir in $PList)
    {
        $Dir = $Dir -replace "@{FullName=", "" -replace "}"
        Resolve-Path -Path $Dir
        Write-Output "`n" | Out-File $log -append
        Write-Output "#######################################################################" | Out-File $Log -append
        Get-Item $Dir | select FullName | Out-File $Log -append
        $AclList = Get-Acl -Path $Dir -Filter Access | Select-Object -ExpandProperty Access | Where-Object {$_.IdentityReference -like "Domain\*"} | Select-Object IdentityReference
        Get-Acl -Path $dir -Filter Access | Select-Object -ExpandProperty Access | Where-Object {$_.IdentityReference -like "Domain\*"} | Out-File $Log -append
            foreach($Id in $AclList.IdentityReference.Value -replace 'Domain\\')
                {
                    $ADGroup = Get-ADGroup $Id -Properties member | Select-Object -ExpandProperty member
                    Write-Output "`n" | Out-File $Log -append
                    Write-Output "Member of $Id `n
---------------------------------" | Out-File $Log -append
                    foreach ($Object in $ADGroup)
                        {
                            $Group      = Get-ADUser -filter * -SearchBase "$Object"
                            if($Group -ne $null)
                                {
                                    $GrName     = $Group.Name
                                    Write-Output "$GrName" | Out-File $Log -append
                                }
                        } 
                }
Clear-Variable Object, Group, ADGroup, ACLList, GRName, Id
    }