none
הרצת סקריפט WMI ע"י משתמש שאינו Local Admin RRS feed

  • שאלה

  • אנו מעוניינים להיות מסוגלים להריץ את הסקריפט המצורף למטה ע"י משתמש שאינו Local Admin. למרות התייעצות עם מספר מומחים טרם מצאנו פתרון שעובד (אמור להחזיר את זהוי ה-Process). כל עזרה תתקבל בהערכה רבה מאד!!

     

     (remember to change the computer/user/password)

     

    Option Explicit

    Dim strComputer

    Dim objWMIService

    Dim intProcessID

    Dim objSWbemLocator

    Dim objSWbemServices

    Dim objCreateProc

    Dim ProcessID

    Dim result

     

    strComputer = "10.1.0.168"

     

    Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")

    Set objSWbemServices = objSWbemLocator.ConnectServer(strComputer, "root\cimv2", "V-W2K3-ORACLEDB\user1", "123456")

     

    set objCreateProc = objSWbemServices.Get("Win32_Process")

    result = objCreateProc.Create ("cmd /C netstat -na > c:\netstat.txt", null, null, ProcessID)

     

    If (result <> 0) Then

            WScript.Echo "Creating Remote Process Failed: " & result

            Wscript.Quit

    End If

     

    WSCript.Echo "Process ID = " & ProcessId

    WScript.Quit

     

    יום רביעי 19 ינואר 2011 09:51

תשובות

  • על מנת להריץ קוד שכזה צריכים להיות ההרשאות הבאות :

     

    “Execute Methods” and “Remote Enable”  על  CIMV2.

    כמו כן למשתמש שבו אתה משתמש ("V-W2K3-ORACLEDB\user1") צריכה להיות הרשאה על Netsh.

    ניתן להוסיף את ההרשאות התאימות באמצעות GPO.

     

    • סומן כתשובה על-ידי Meir Pinto יום שני 28 פברואר 2011 11:03
    יום ראשון 30 ינואר 2011 00:30
  • שלום.

     

    לא צריך הרשאה מיוחדת בשביל לזהות איזה PROCESS מאזין לפורט מסויים.

    להלן דוגמה לפקודה מה CMD:

    "netstat -ano | find "12345

    אם אפשר דרך netstat אז אני מניח שאפשר גם בעזרת כלים אחרים, או אפילו לכתוב קובץ EXE שיעשה את הפעולה בעזרת כלי תכנות מתאים.

     

    ייתכן שבעיית ההרשאות שלכם קשורה למשהו אחר, למשל העובדה שאתם מנסים לכתוב קובץ לתיקיית השורש של כונן C :

    result = objCreateProc.Create ("cmd /C netstat -na > c:\netstat.txt", null, null, ProcessID)

    או פקודה אחרת שאתם מריצים.

     

    בכלל - נראה לי ש WMI זה לא בהכרח הכלי הכי מתאים למשימה, ושווה לבדוק גם כיוונים אחרים בהתאם למה שאתם בדיוק צריכים.

     

    יזהר

     


     

     


    Yizhar Hurwitz http://yizhar.mvps.org
    • סומן כתשובה על-ידי Meir Pinto יום שני 28 פברואר 2011 11:03
    יום ראשון 27 פברואר 2011 21:10

כל התגובות

  • שלום רב,

    תוכל לרכוש את הכלי הנ"ל:

    http://www.mast-computer.com/c_9-l_en.html

    ולדעתי הוא יתן לכם מענה לצורך שהעלאת.

    בהצלחה


    בברכה, יובל סיני, יועץ טכנולוגיות, אתר אינטרנט: http://www.ben-shushan.net
    יום רביעי 19 ינואר 2011 20:23
  • על מנת להריץ קוד שכזה צריכים להיות ההרשאות הבאות :

     

    “Execute Methods” and “Remote Enable”  על  CIMV2.

    כמו כן למשתמש שבו אתה משתמש ("V-W2K3-ORACLEDB\user1") צריכה להיות הרשאה על Netsh.

    ניתן להוסיף את ההרשאות התאימות באמצעות GPO.

     

    • סומן כתשובה על-ידי Meir Pinto יום שני 28 פברואר 2011 11:03
    יום ראשון 30 ינואר 2011 00:30
  • שלום.

    למה אתם צריכים את ה process id ? מה עושים איתו?

    אולי עדיף להריץ את הפקודה באופן אחר אם יש בעיה עם WMI - למשל על ידי קובץ CMD רגיל או קובץ EXE (תוכנה קטנה שתכתבו)?

    כמו כן אם יש בעיה של הרשאות אז ייתכן שעדיף לכם להריץ את הקובץ ברמת ה COMPUTER במקום ה USER,

    למשל בתור חלק מ STARTUP SCRIPT ב GROUP POLICY במקום LOGON SCRIPT?

    מה דעתך?

    יזהר

     


    Yizhar Hurwitz http://yizhar.mvps.org
    יום ראשון 30 ינואר 2011 07:24
  •  

    היי,

    אשמח אם תוכל/י לעדכן אותנו בסטטוס השאלה שלך.

    במידה וקיבלת תשובה מתאימה לשאלתך, יש לסמן את התשובה המתאימה ע"י לחיצה על "סמן כתשובה" ליד סימון ה V הירוק

    אם לא קיבלת תשובה, מומלץ לספק פרטים נוספים אודות הבעיה, פרטי לוג, צילומי מסך וכו'

    על מנת להעלות תמונה לפורום ניתן להעזר במדריך להעלאת תמונה


    אם תגובתי פתרה את בעייתך - לחץ/י, על "סמן כתשובה" ליד סימן ה V הירוק.


    מיקרוסופט מציעה שירות זה ללא תשלום, למטרת סיוע למשתמשים והעשרת הידע הקשור בטכנולוגיות ובמוצרים של Microsoft. תוכן זה מתפרסם כפי שהוא והוא אינו מעיד על כל אחריות מצד מיקרוסופט.
    יום ראשון 27 פברואר 2011 07:05
  • כלים חיצוניים לא עוזרים במקרה שלנו. אנחנו צריכים להיות מסוגלים למצוא את זהוי הפרוסס המתאים בלי להתקין כלום על מכונת היעד.
    יום ראשון 27 פברואר 2011 08:52
  • ההרשאות שהזכרת לעיל כבר קיימות חוץ מזו של ה-Netsh. יכול להיות שזה יעזור? איך מוסיפים הרשאה כזו?
    יום ראשון 27 פברואר 2011 08:53
  • אנחנו צריכים לזהות איזה פרוסס מאזין על פורט נתון כדי לדעת באיזו אפליקציה מדובר. יש לך רעיון לדרך אחרת לזהות אותו?

    בכל מקרה, להריץ משהו ב-Logon Script או ב-Startup Script לא נראה רלוונטי.

    מה הכוונה להריץ ברמת ה-Computer ולא ה-User? איך עושים את זה?

     

    יום ראשון 27 פברואר 2011 08:56
  • שלום.

     

    לא צריך הרשאה מיוחדת בשביל לזהות איזה PROCESS מאזין לפורט מסויים.

    להלן דוגמה לפקודה מה CMD:

    "netstat -ano | find "12345

    אם אפשר דרך netstat אז אני מניח שאפשר גם בעזרת כלים אחרים, או אפילו לכתוב קובץ EXE שיעשה את הפעולה בעזרת כלי תכנות מתאים.

     

    ייתכן שבעיית ההרשאות שלכם קשורה למשהו אחר, למשל העובדה שאתם מנסים לכתוב קובץ לתיקיית השורש של כונן C :

    result = objCreateProc.Create ("cmd /C netstat -na > c:\netstat.txt", null, null, ProcessID)

    או פקודה אחרת שאתם מריצים.

     

    בכלל - נראה לי ש WMI זה לא בהכרח הכלי הכי מתאים למשימה, ושווה לבדוק גם כיוונים אחרים בהתאם למה שאתם בדיוק צריכים.

     

    יזהר

     


     

     


    Yizhar Hurwitz http://yizhar.mvps.org
    • סומן כתשובה על-ידי Meir Pinto יום שני 28 פברואר 2011 11:03
    יום ראשון 27 פברואר 2011 21:10
  • שלום.

    אגב - אם תצטרכו עזרה בפתרון, לדעתי תוכלו לפנות לניר סופר:

    http://nirsoft.net/utils/cports.html

    לדעתי הוא יכול בזמן קצר יחסית להכין לכם פתרון מותאם אישית לצרכים שלכם.

     

    אני לא מכיר אותו ואין לי קשר עסקי איתו - רק בהזדמנות הזו רוצה לציין את התוכנות המעולות והיעילות שהוא כותב ומשתף לכולם.

     

    יזהר

     


    Yizhar Hurwitz http://yizhar.mvps.org
    יום ראשון 27 פברואר 2011 21:15
  • הבעיה קוראת גם לא עם netstat. למשל אם ננסים ליצור תהליך  /:cmd /C dir c  .

    אנחנו חיבים להשתמש ב-WMI משום שלמיטב הבנתינו זוהי הדרך התכנותית היחידה שמאפשרת לבצע פקודות על מחשב מרוחק ללא העברה מראש של קבצי EXE למשל. דרכים אחרות כגון PSTOOLS בודאי מחייבות הרשאות LOCAL ADMIN.

     

    יום שישי 11 מרץ 2011 11:16
  • נו טוב - רק עכשיו הבנתי שמדובר בהפעלה על מחשב מרוחק, ברור שזה משנה את התמונה, וחבל שלא הדגשת את זה קודם.

    למיטב ידיעתי רק משתמש עם הרשאות מלאות על המחשב המרוחק יכול לבצע פקודות מרחוק,

    כמו פעולות אחרות כגון גישה ל administrative shares, התקנות push install של תוכנות שונות, וכו'.

    אני מניח שניתן לשנות את ההרשאות על ידי GPO או הפעלה חד פעמית של פקודה שתשנה את ההרשאות,

    או להזין לסקריפט שלכם שם משתמש וסיסמא עם הרשאות מתאימות.

     

    תקרא כאן לגבי WMI SECURITY

    Q 8. How do I set WMI namespace security?

    http://technet.microsoft.com/en-us/library/ee692772.aspx#EFAA

     

    יזהר

     


    Yizhar Hurwitz http://yizhar.mvps.org
    יום שישי 11 מרץ 2011 12:36
  • עוד קישורים:

    Securing a Remote WMI Connection

    http://msdn.microsoft.com/en-us/library/aa393266%28v=vs.85%29.aspx

     

    Connecting to WMI Remotely Starting with Windows Vista

    http://msdn.microsoft.com/en-us/library/aa822854%28v=vs.85%29.aspx

     

    יזהר

     


    Yizhar Hurwitz http://yizhar.mvps.org
    יום שישי 11 מרץ 2011 12:39