1

以下のような PowerShell スクリプトを使用しています。AD Security グループのメンバーシップを調べ、それに基づいてユーザーのドライブをマップします。私が達成しようとしているのは、ユーザーが特定の IP またはサブネットからログオンした場合に、AD グループ メンバーシップから取得したドライブに加えて別のドライブ セットをマップすることです。

    # 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");
    }
4

1 に答える 1

0

これにより、IPv4 アドレスが文字列オブジェクトとして取得されます。

$ip = (Get-WmiObject -Class Win32_NetworkAdapterConfiguration | Where-Object {$_.IPAddress} | Select-Object -ExpandProperty IPAddress)[0]

その後、必要に応じてそれを解析できます。必要なものが得られる場合は、代わりに .IPSubnet または .DefaultIPGateway プロパティを使用することもできます。

他の利用可能なプロパティについては、次を試してください。

Get-WmiObject -Class Win32_NetworkAdapterConfiguration | Where-Object {$_.IPAddress} | Get-Member
于 2013-04-11T00:01:24.217 に答える