Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Here was a little challenge....
I needed to write a script which i could invoke and leave run in the background and what it will do is monitor if a usb device is plugged in and out and alert you... the big thing for me is i needed to do this with no external code it all had to be within the platform
they are not perfect by any means but i think its a nice comparision on how you can achieve something in powershell and vbscript... personally i found the powershell one easier it took me about 10 mins to acheive similar results. in vbscript it took me a while longer :) but thats because i am weak with vbscript at best...
Powershell script
cls
[array]$wmiquery = $null
$x = 0
while ($x -ne 1 )
{
$wmiquery = get-wmiobject Win32_PNPENtity | where {$_.Description -like "*usb mass storage device"}
if ($wmiquery -ne $null)
{
foreach ($w in $wmiquery)
{
if ($msg -eq 1)
{
#this is meant to have no code :)
}
else
{
Write-Host ("Please Talk to IT about USB Device")
$msg = 1
}
}
}
else
{
$msg = 0
}
}
VBScript
'Forcing Good Practice :)
option explicit
'Here are some of the variables used in the script
DIM objwmiservice, objitem, colitems,strcomputer,colstr,colstr1,collecteditem,index,msgdisplayed,test
'Initialize the relevant variables
index = 1
msgdisplayed = 0
strcomputer = "."
colstr = "USB Mass Storage Device"
'Main Script - Never Ending Loop
do
'Set the WMI Path and Collection the information required, we parse on USB MAss Storage Device
set objwmiservice = getobject ("winmgmts:\\" & strcomputer & "\root\cimv2")
set colitems = objwmiservice.execquery( _
"Select * From Win32_PNPEntity where Name = 'USB Mass Storage Device' ")
'Test what we have collected, if we have displayed the message once dont display again..
for each collecteditem in colitems
if msgdisplayed = 0 then
colstr1 = collecteditem.description
if colstr1 = colstr then
msgbox ("PLease talk to IT regarding your USB Storage Device")
msgdisplayed = 1
end if
end if
next
'Wait 10 mins before clearing the display variable and prompting them again..
wscript.sleep 600000 'in msec 10mins in real terms :)
msgdisplayed = 0
Loop until index = 2
Comments
- Anonymous
August 03, 2011
Thankfully with PowerShell it's even easier than that! Check it out: Register-WmiEvent -Query "select * from __InstanceCreationEvent within 5 where TargetInstance ISA 'Win32_PnpEntity' and TargetInstance.Description like '%USB Mass Storage Device%'" -Action { Write-Host "Please talk to IT about your USB device." -ForegroundColor Red } Cheers, Trevor Sullivan http://trevorsullivan.net http://twitter.com/pcgeek86