حدد المستخدمين الذين يصلون إلى مجلد مشترك باستخدام PowerShell

StackOverflow https://stackoverflow.com/questions/1795679

سؤال

أحتاج إلى تحديد المستخدمين/الجلسات التي تصل إلى مجلد مشترك على جهاز Windows XP (SP2) باستخدام برنامج نصي PowerShell (V 1.0). هذه هي المعلومات المعروضة باستخدام إدارة الكمبيوتر | أدوات النظام | مجلدات مشتركة | جلسات. هل يمكن لأي شخص أن يعطيني مؤشرات حول كيفية القيام بذلك؟

أظن أنه سيتطلب استعلام 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
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top