3

我需要使用 PowerShell 脚本 (v 1.0) 确定访问 Windows XP (SP2) 机器上共享文件夹的用户/会话。这是使用计算机管理显示的信息 | 系统工具 | 共享文件夹 | 会议。任何人都可以给我指点如何去做吗?

我猜它需要一个 WMI 查询,但我最初的在线搜索并没有显示查询详细信息是什么。

谢谢,魔术安迪

4

2 回答 2

4

我想出了以下脚本:

$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# 中做过类似的事情。

于 2009-11-25T10:21:42.717 回答
1

我对其进行了一些修改以显示主机名而不是 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
}
于 2018-07-25T02:24:56.293 回答