我需要使用 PowerShell 脚本 (v 1.0) 确定访问 Windows XP (SP2) 机器上共享文件夹的用户/会话。这是使用计算机管理显示的信息 | 系统工具 | 共享文件夹 | 会议。任何人都可以给我指点如何去做吗?
我猜它需要一个 WMI 查询,但我最初的在线搜索并没有显示查询详细信息是什么。
谢谢,魔术安迪
我需要使用 PowerShell 脚本 (v 1.0) 确定访问 Windows XP (SP2) 机器上共享文件夹的用户/会话。这是使用计算机管理显示的信息 | 系统工具 | 共享文件夹 | 会议。任何人都可以给我指点如何去做吗?
我猜它需要一个 WMI 查询,但我最初的在线搜索并没有显示查询详细信息是什么。
谢谢,魔术安迪
我想出了以下脚本:
$computer = "LocalHost"
$namespace = "root\CIMV2"
$userSessions = Get-WmiObject -class Win32_ServerConnection -computername $computer -namespace $namespace
if($userSessions -ne $null)
{
Write-Host "The following users are connected to your PC: "
foreach ($userSession in $userSessions)
{
$userDetails = [string]::Format("User {0} from machine {1} on share: {2}", $userSession.UserName, $userSession.ComputerName, $userSession.ShareName)
Write-Host $userDetails
}
Read-Host
}
以下文章很有用:
与往常一样,如果您在 PowerShell 中找不到方法,请查看是否有人在 C# 中做过类似的事情。
我对其进行了一些修改以显示主机名而不是 IP:
$computer = "LocalHost"
$namespace = "root\CIMV2"
$userSessions = Get-WmiObject -class Win32_ServerConnection -computername $computer -namespace $namespace
if($userSessions -ne $null)
{
Write-Host "The following users are connected to your PC: "
foreach ($userSession in $userSessions)
{
$ComputerName = [system.net.dns]::resolve($usersession.computername).hostname
$userDetails = [string]::Format("User {0} from machine {1} on share: {2}", $userSession.UserName, $ComputerName, $userSession.ShareName)
Write-Host $userDetails
}
Read-Host
}