حدد المستخدمين الذين يصلون إلى مجلد مشترك باستخدام PowerShell
-
22-09-2019 - |
سؤال
أحتاج إلى تحديد المستخدمين/الجلسات التي تصل إلى مجلد مشترك على جهاز 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
}
المقالات التالية كانت مفيدة:
- http://www.activexperts.com/activmonitor/windowsmanagement/adminscripts/filesfolders/sharedfolders/
- http://www.computerperformance.co.uk/powershell/powershell_wmi_shares.htm
- http://www.codeproject.com/kb/cs/networkspy.aspx؟msg=2384830
كما هو الحال دائمًا ، إذا لم تتمكن من العثور على طريقة للقيام بذلك في 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
}
لا تنتمي إلى StackOverflow