我们公司采用许多各个部门和工作组都在使用 Microsoft Access 应用程序来收集数据和报告。随着越来越多的台式工作站被笔记本电脑取代,我们遇到越来越多的情况,用户通过台式机扩展坞连接后登录 Access 应用程序;但他们可能会在应用程序仍在运行时断开连接去参加会议。Access 不喜欢这种情况。
不同的 IP 地址用于 Wi-Fi 连接;Access 需要与后端数据库建立“稳定”的连接;等等。如果用户在仅通过 Wi-Fi 连接到网络时启动 Access 应用程序,情况也是如此。
我想尝试在启动 Access 应用程序之前运行 PowerShell 脚本。(Access 应用程序前端位于本地驱动器上,而后端数据存储在网络共享上。)该脚本将检查笔记本电脑的连接状态。如果它仅通过 Wi-Fi 连接,则甚至不允许启动 Access 应用程序。
我查看了 Get-CimInstance Win32_NetworkAdapterConfiguration 以查看 NIC 和 Wi-Fi 适配器的 IP 地址......但我不知道如何“一般地”检查笔记本电脑是如何真正连接到我们的 LAN 的。
我设想了一个 PowerShell 函数,如果笔记本电脑通过有线 NIC 连接到 LAN,则返回 true/false。如果为 true,则继续启动 Access 应用程序。
有任何想法吗?
真挚地,
Steve Erbach 威斯康星州马尼托沃克
答案1
在 powershell 中,你可以使用属性来过滤网络连接的类型MediaType
。例如:
$ethernet = Get-NetAdapter -Physical |
Where {$_.Status -eq 'Up' -and $_.MediaType -eq 802.3}
# run the program if connected
if ($ethernet) {
"Run program here"
}
# otherwise show the user an error message
else {
[System.Windows.MessageBox]::Show('No ethernet connection detected','Error','OK','Error')
}
但它无法解决用户切换至 wifi 的问题。
由于你的无线网络位于不同的子网,因此可能更容易阻止(通过防火墙规则)从 wifi IP 地址到 Access 数据库的连接