【问题标题】:How to map multiple network drives based on a users location using powershell?如何使用powershell根据用户位置映射多个网络驱动器?
【发布时间】:2019-07-05 18:10:45
【问题描述】:

尝试创建一个 powershell 脚本来执行此操作,但我不知道如何编写逻辑代码以了解用户所在的位置以及要映射的网络驱动器。这将用于旅行的人。

一个多星期以来,我一直在研究和反复试验。

$AustinShares = @(
    "\\Austin-2016\Austin"
    "\\Austin-2016\PowerCommon"
    )

    $RaleighShares = @(
    "\\Raleigh-2016\PowerCommon"
    "\\Raleigh-2016\Scans"
    "\\Raleigh-2016\PowerProjectControls"
    )

    $AllShares = $AustinShares + $RaleighShares

$apiurl = "http://api.ipstack.com/check?access_key=b0639dfc83871399c5d4d122998f0347"

            $apiresponse = Invoke-RestMethod -Method Get -URI $apiurl

            $hash = @{
                IP = $apiresponse.ip
                Country = $apiresponse.country_name
                RegionName = $apiresponse.region_name
                City = $apiresponse.city
                }

            $result = New-Object PSObject -Property $hash

Write-Output $result

$TestPath = get-wmiobject win32_logicaldisk | Select-Object -expand DeviceID -Last 1 |
ForEach-Object { [char]([int][char]$_[0]  + 1) + $_[1] }

If ($apiresponse.region_name -eq $Locations){
    ForEach-Object
    New-PSDrive -Name $TestPath -Root $DrivePath  -Persist -PSProvider "FileSystem"
}

所以位置 API 出去,找到计算机位置。我只需要使用他们所处的状态。根据他们所处的状态为该州的办公室映射某些驱动器。例如,如果他们在北卡罗来纳州,则绘制 Raleigh Shares 地图。我想我需要使用“foreach”命令,但我不确定如何合并它。

【问题讨论】:

    标签: powershell networking scripting drive


    【解决方案1】:

    为了简单明了,我将假设您可以成功确定办公室,并且您将在$office 中找到的办公室名称存储起来,并且您已经编写了一个函数Get-NextAvailableDrive返回下一个要分配的驱动器的字母:

    Switch ($office) {
        "Raleigh"    {$sharelist = $RaleighShares}
        "Austin"     {$sharelist = $AustinShares}
    # You can add additional office and their shares here as required
    }
    
    ForEach ($share in $sharelist) {
        New-PSDrive -Name (Get-NextAvailableDrive) -Root $share -Persist -PSProvider "FileSystem"
    }
    

    如果您添加新办公室,您只需将办公室位置添加到交换机,并安排将该办公室的股份分配给上述交换机中的 $sharelist。

    【讨论】:

    • 我还要注意,如果您办公室的所有计算机都在一个域中,您还可以使用组策略来建立所需的驱动器映射 - 这可能更容易。
    • 我们正在从使用登录脚本来映射我们主要办公室的驱动器到组策略。但是对于旅行的人来说,他们需要一些动态的东西来为他们去的每个位置映射驱动器。
    • 也感谢 Jeff 弄清楚了这一切。我对 powershell 很陌生,只是想不通如何做到这一点。所以说api吐出他们的位置是北卡罗来纳州。我需要分配一个变量,比如 $APILocation,然后我可以使用它来代替 $office。另外,我对使用 $share 有点困惑,脚本如何知道要使用哪个“共享”?如果这有意义?
    • 组策略也可用于应用到计算机,而不仅仅是用户 - 我们在这里这样做是为了决定哪些网络打印机可用在给定的工作地点。
    • 我不认为我们的 AD 设置了可以用于项目级定位的特定网站。我一直在寻找可以在项目级别定位中使用的唯一标识符来解决这个问题,但没有遇到任何问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 2019-11-21
    • 2018-07-18
    • 1970-01-01
    相关资源
    最近更新 更多