Powershell:创建一个检查远程计算机上的网络驱动器的程序

时间:2015-12-13 11:45:04

标签: powershell powershell-v2.0 powershell-remoting

我正在尝试编写一个程序来遍历我的所有远程计算机网络驱动器,并定义它们是否已经很好地映射。如果它们不是,它将映射它们,如果它没有成功,它将打印我的机器主机名的日志。

出于某种原因,我一直坚持创建这个功能:

if ($state.current.name == "view3") {
    var backView = $ionicHistory.backView();
    backView.stateParams = {param1:true};
    backView.stateId = backView.stateName + "_param1=true";
    $ionicHistory.goBack(); // moves to view2
} else {
    $ionicHistory.goBack();
}

有人可以帮忙吗? 十分感谢, 塞巴斯蒂安。

2 个答案:

答案 0 :(得分:0)

Invoke-Command -ComputerName localhost -ScriptBlock ${function:checkMapped}

但我认为这样做是行不通的,因为你打开自己的会话来做这件事,没有映射驱动器(只在我自己的系统上检查过)。

另外我认为网络驱动器与登录用户相关。

请改为尝试:

function Check-MappedDrive ($computerName) {
    $driveLetter = "M:"
    $path = "\\xxx\xxxx"

    Get-WmiObject -Class Win32_MappedLogicalDisk -ComputerName $computerName |
        Where-Object { $_.Name -eq $driveLetter } |
        ForEach-Object {
            if($_.ProviderName -eq $path) {
                "$driveLetter is mapped to $path on $computerName"
            }
        }
}

foreach($computerName in "localhost", "127.0.0.1") {
    Check-MappedDrive $computerName
}

不知道您之后是否能够映射驱动器:您必须模拟登录用户才能这样做。

但您可以将批处理文件放在用户桌面或启动文件夹中以映射驱动器,或创建计划任务。

答案 1 :(得分:0)

这可以为你提供名称和路径。

  foreach($CompName in $Complist)
    {
    get-wmiobject win32_mappedlogicaldisk -computername  %CompName | select name,providername
    }