首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用powershell基于IP/子网和AD组成员关系映射网络驱动器

使用powershell基于IP/子网和AD组成员关系映射网络驱动器
EN

Stack Overflow用户
提问于 2013-04-11 05:42:43
回答 1查看 1.5K关注 0票数 1

我使用的powershell脚本类似于下面的脚本,它查看AD安全组成员身份,并基于此为用户映射驱动器。我想要实现的是,当它看到用户从某个特定IP或子网登录时,除了从AD组成员身份获取的驱动器之外,它还会映射一组不同的驱动器,任何洞察力都将受到赞赏。

代码语言:javascript
复制
    # The section below determines what AD groups is the user member of
    $strName = $env:username

    function get-GroupMembership($DNName,$cGroup){

        $strFilter = "(&(objectCategory=User)(samAccountName=$strName))"

        $objSearcher = New-Object System.DirectoryServices.DirectorySearcher
        $objSearcher.Filter = $strFilter

        $objPath = $objSearcher.FindOne()
        $objUser = $objPath.GetDirectoryEntry()
        $DN = $objUser.distinguishedName

        $strGrpFilter = "(&(objectCategory=group)(name=$cGroup))"
        $objGrpSearcher = New-Object System.DirectoryServices.DirectorySearcher
        $objGrpSearcher.Filter = $strGrpFilter

        $objGrpPath = $objGrpSearcher.FindOne()

        If (!($objGrpPath -eq $Null)){

            $objGrp = $objGrpPath.GetDirectoryEntry()

            $grpDN = $objGrp.distinguishedName
            $ADVal = [ADSI]"LDAP://$DN"

            if ($ADVal.memberOf.Value -eq $grpDN){
                $returnVal = 1
                return $returnVal = 1
            }else{
                $returnVal = 0
                return $returnVal = 0

            }

        }else{
                $returnVal = 0
                return $returnVal = 0

        }

    }

    # The section below maps network drives based on users AD Security Group memberships

    $result = get-groupMembership $strName "SecurityGrtoup1"
    if ($result -eq '1') {
        $(New-Object -ComObject WScript.Network).RemoveNetworkDrive("G:");
        $(New-Object -ComObject WScript.Network).MapNetworkDrive("G:", "\\server1\Group");
        $(New-Object -ComObject WScript.Network).RemoveNetworkDrive("P:");
        $(New-Object -ComObject WScript.Network).MapNetworkDrive("P:", "\\server2\Common");
    }

    $result = get-groupMembership $strName "SecurityGroup3"
    if ($result -eq '1') {
        $(New-Object -ComObject WScript.Network).RemoveNetworkDrive("N:");
        $(New-Object -ComObject WScript.Network).MapNetworkDrive("N:", "\\Server3\files");
    }
EN

回答 1

Stack Overflow用户

发布于 2013-04-11 08:01:24

这应该会将IPv4地址作为一个字符串对象:

代码语言:javascript
复制
$ip = (Get-WmiObject -Class Win32_NetworkAdapterConfiguration | Where-Object {$_.IPAddress} | Select-Object -ExpandProperty IPAddress)[0]

然后,您可以根据需要对其进行解析,也可以改为使用.IPSubnet或.DefaultIPGateway属性(如果这样可以获得所需的内容)。

有关其他可用属性,请尝试:

代码语言:javascript
复制
Get-WmiObject -Class Win32_NetworkAdapterConfiguration | Where-Object {$_.IPAddress} | Get-Member
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15936982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档