none
WMi select OS и записать в файл, RRS feed

  • Вопрос

  • Возможно-ли создать wmi запрос (какая ОС стоит) на vbscript и записать в файл.
    На операционной системе Windows 2000 ?
    Будушее за самураями.
    25 января 2010 г. 19:15

Все ответы

  • 25 января 2010 г. 21:08
    Модератор
  • Windows 2000 No
    Этот скрипт я вчера видел.
    То есть ответ что под 2000 работать не будет очевиден?
    Будушее за самураями.
    26 января 2010 г. 6:27
  • > То есть ответ что под 2000 работать не будет очевиден?

    думаю, что под win2k работать не будет

    можно зайти с другой стороны: если у вас есть AD, то информацию об ОС, установленной на компьютере-члене домена, можно получить из AD.
    26 января 2010 г. 8:29
  • Осталось эту функцию получить из АД через ADSI.
    У кого нибудь есть варианты таких скриптов?

    Будушее за самураями.
    26 января 2010 г. 11:52
  • Осталось эту функцию получить из АД через ADSI.
    У кого нибудь есть варианты таких скриптов?

    Будушее за самураями.


    на VBScript, JScript, опросив AD, например, изспользуя ADODB (чуть позже найду и выложу пример, хотя, думаю, что это легко нагуглить)
    а на PoSh'е так это вообще в одну строкуможно сделать, если установлен ActiveRolesManagementShellforActiveDirectory:
    Get-QADComputer |ft SamAccountName, OSVersion
    26 января 2010 г. 15:27
  • Вот, на VBScript делал когда-то. Почти то, что вам нужно:

    Option Explicit 
    Dim rootDSE,strDomainDN,objConnection 
    Dim strSubContainer,objCommand,objRecordSet
    Dim strMsg, arrDescription, strAccountProp
    Const SPLITER = ","
    Const ADS_SCOPE_SUBTREE = 2 
    Const ADS_SCOPE_ONELEVEL = 1
    Const ADS_UF_ACCOUNTDISABLE = 2
    '
    strSubContainer="OU=ou_name," 
    Set rootDSE = GetObject("LDAP://rootDSE") 
    strDomainDN = rootDSE.Get("defaultNamingContext") 
    Set objConnection = CreateObject("ADODB.Connection") 
    Set objCommand =   CreateObject("ADODB.Command") 
    objConnection.Provider = "ADsDSOObject" 
    objConnection.Open "Active Directory Provider" 
    Set objCommand.ActiveConnection = objConnection 
    objCommand.CommandText = "Select Name, " &_ 
            "operatingSystem, operatingSystemServicePack, Description, userAccountControl " &_ 
            "from 'LDAP://"&strSubContainer&strDomainDN&"' " &_ 
            "Where objectClass='computer'" 
    objCommand.Properties("Page Size") = 1000 
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 'ADS_SCOPE_ONELEVEL 'ADS_SCOPE_SUBTREE 
    Set objRecordSet = objCommand.Execute 
    If objRecordSet.RecordCount<1 Then 
        WScript.Echo "No computer accounts found in "&strContainer&strDomainDN 
        WScript.Quit 
    End If 
    objRecordSet.MoveFirst 
    Do Until objRecordSet.EOF
     ''Выбираем только компы без SP или winXP SP<>2
     If ((InStr(objRecordSet.Fields("operatingSystem"),"XP")>0) And ((InStr(objRecordSet.Fields("operatingSystemServicePack"),"2")<=0)Or (isNull(objRecordSet.Fields("operatingSystemServicePack"))))) Then
      strAccountProp = "Enabled"
      If objRecordSet.Fields("userAccountControl").Value And ADS_UF_ACCOUNTDISABLE Then strAccountProp = "Disabled"
         strMsg = objRecordSet.Fields("Name").Value & _ 
         SPLITER & objRecordSet.Fields("operatingSystem").Value & _
         SPLITER & objRecordSet.Fields("operatingSystemServicePack").Value & _
         SPLITER & strAccountProp
         arrDescription = objRecordSet.Fields("Description").Value
         If Not IsNull (arrDescription) Then
          strMsg = strMsg & SPLITER & arrDescription(0)
         End If
         WScript.Echo strMsg
        End If
        ''WScript.Echo strMsg
        objRecordSet.MoveNext 
    Loop
    26 января 2010 г. 15:44
  • а так не проще?
    dsquery * "OU=Servers,DC=contoso,DC=com" -attr name operatingSystem operatingSystemVersion operatingSystemServicePack
    ну или допилить
    26 января 2010 г. 16:26
  • а на PoSh'е так это вообще в одну строкуможно сделать, если установлен ActiveRolesManagementShellforActiveDirectory:
    Get-QADComputer |ft SamAccountName, OSVersion
    Да установлен.
    Было бы здорово увидеть на PoSH 2.0 такой пример.


    Будушее за самураями.
    27 января 2010 г. 7:31
  • Да установлен.
    Было бы здорово увидеть на PoSH 2.0 такой пример.
    Будушее за самураями.
    27 января 2010 г. 7:31
  • а на PoSh'е так это вообще в одну строкуможно сделать, если установлен ActiveRolesManagementShellforActiveDirectory:
    Get-QADComputer |ft SamAccountName, OSVersion
    Да установлен.
    Было бы здорово увидеть на PoSH 2.0 такой пример.


    Так это одинаково работает, в любой версии PoSh

    Или вы пример не разглядели? Тогда еще раз: Get-QADComputer |ft SamAccountName, OSVersion
    27 января 2010 г. 11:05
  • Windows 2000 No
    Этот скрипт я вчера видел.
    То есть ответ что под 2000 работать не будет очевиден?
    Будушее за самураями.

    WMI Win32_OperatingSystem http://msdn.microsoft.com/en-us/library/aa394239(VS.85).aspx

    Requirements

    Minimum supported client Windows 2000 Professional
    Minimum supported server Windows 2000 Server
    MOF Cimwin32.mof
    DLL Cimwin32.dll
    Namespace \root\cimv2

    Сазонов Илья http://www.itcommunity.ru/blogs/sie-wl/
    27 января 2010 г. 12:20
    Модератор
  • можете подсказать чтобы с ActiveDirectory начать работать нужно модуль подгрузить import и имя?

    Будушее за самураями.
    1 февраля 2010 г. 8:46
  • можете подсказать чтобы с ActiveDirectory начать работать нужно модуль подгрузить import и имя?

    Будушее за самураями.

    Если вы хотели спросить: "что нужно сделать для того, чтобы начать пользоваться командлетами, которые входят в пакет ActiveRolesManagementShellforActiveDirectory?" То вам необходимо подключить соответствующую оснастку, которая была зарегистрирована во время установки продукта. Я, например, чтобы не заморачиваться, просто воткнул в $profile такую сткроку:
    get-pssnapin -registered | add-pssnapin -passthru -ErrorAction SilentlyContinue
    тем самым, подключая все зарегистрированные оснастки
    • Изменено s.h.s. _ 1 февраля 2010 г. 9:09
    1 февраля 2010 г. 8:56
  • Если вы хотели спросить: "что нужно сделать для того, чтобы начать пользоваться командлетами, которые входят в пакет ActiveRolesManagementShellforActiveDirectory?" То вам необходимо подключить соответствующую оснастку, которая была зарегистрирована во время установки продукта. Я, например, чтобы не заморачиваться просто воткнул в $profile такую сткроку:
    get-pssnapin -registered | add-pssnapin -passthru -ErrorAction SilentlyContinue
    тем самым, подключая все зарегистрированные оснастки
    Да я так и спрашиваю.Спасибо за ответ!
    get-pssnapin -registered | add-pssnapin -passthru -ErrorAction SilentlyContinue Этот вариант опробую у себя.
    Ещё вопросик а допустим мне на рабочих станция по политикам нужно запустить скрипт который (если пользователь  в ou=Russia делает одно действие ,а если в ou=USA  то действие другое ) так мне в профиль пользователя нужно устанавливать эти строки?

    Будушее за самураями.
    1 февраля 2010 г. 9:06
  • >Ещё вопросик а допустим мне на рабочих станция по политикам нужно запустить скрипт который (если пользователь  в ou=Russia делает одно действие ,а если в ou=USA  то действие другое ) так мне в профиль пользователя нужно устанавливать эти строки?


    Можно просто создать 2 политики, которые будут запускать разные скрипты. Одну политику подлинковать к ou=Russia, другую - к ou=USA 

    Хотя, конечно, можно и в скрипте сделать. Например, получить DN пользователя, выделить из него OU и выполнять те или иные действия на основании полученного результата.
    1 февраля 2010 г. 9:15
  • а строчку get-pssnapin -registered | add-pssnapin -passthru -ErrorAction SilentlyContinue  в профиль пользователя нужно на всех рабочих станциях делать?

    Будушее за самураями.
    1 февраля 2010 г. 9:40
  • а строчку get-pssnapin -registered | add-pssnapin -passthru -ErrorAction SilentlyContinue  в профиль пользователя нужно на всех рабочих станциях делать?

    Будушее за самураями.

    ваш вопрос говорит о том, что вы не понимаете для чего нужна эта строка.
    1 февраля 2010 г. 10:31
  • а строчку get-pssnapin -registered | add-pssnapin -passthru -ErrorAction SilentlyContinue  в профиль пользователя нужно на всех рабочих станциях делать?

    Будушее за самураями.

    ваш вопрос говорит о том, что вы не понимаете для чего нужна эта строка.

    Я с этим не спорю,а спрашиваю.
    Для работы с АД на PowerShell в профиль пользователя нужно импортировать модули для работы с АД ?
    Вот вопрос.

    Будушее за самураями.
    1 февраля 2010 г. 11:38
  • help about_pssnapin
    1 февраля 2010 г. 13:04
  • help about_pssnapin
    мой PS не нашёл такой команды.

    Будушее за самураями.
    1 февраля 2010 г. 14:00
  • покажите содержимое $PSVersionTable.PSVersion

    1 февраля 2010 г. 14:15
  • Major  Minor  Build  Revision
    -----  -----  -----  --------
    2      0      -1     -1
    Будушее за самураями.
    1 февраля 2010 г. 14:56
  • Major  Minor  Build  Revision
    -----  -----  -----  --------
    2      0      -1     -1
    Будушее за самураями.


    у вас posh v 2.0 все должно работать.
    вот, что у меня выдается на команду help about_pssnapin:

    PS > help about_pssnapin
    РАЗДЕЛ
        about_PSSnapins

    КРАТКОЕ ОПИСАНИЕ
        Описывает оснастки Windows PowerShell, содержит сведения об
        использовании оснасток и управлении ими.

    ПОЛНОЕ ОПИСАНИЕ
        Оснастка Windows PowerShell - это сборка Microsoft .NET
        Framework, в которой содержатся поставщики и/или командлеты Windows
        PowerShell. Оболочка Windows PowerShell включает набор базовых оснасток;
        функциональность оболочки можно расширить, добавив в нее оснастки с
        поставщиками и командлетами, созданными вами или полученными от других
        разработчиков.

        После добавления оснастки содержащиеся в ней командлеты и поставщики
        мгновенно становятся доступными для использования в текущем сеансе;
        при этом изменение касается только текущего сеанса.

        Чтобы можно было добавить оснастку во все будущие сеансы, сохраните
        ее в своем профиле Windows PowerShell. Кроме того, можно использовать
        командлет Export-Console для сохранения имен оснасток в файле консоли
        и применения его в будущих сеансах. Можно даже сохранить несколько
        файлов консоли, включающих различные наборы оснасток.

    ....

    1 февраля 2010 г. 15:06
  • В
    c:\WINDOWS\system32\WindowsPowerShell\v1.0\en-US\
    лежит файл about_Pssnapins.help.txt
    Но покоманде help about_pssnapin выводит ошибку, не понимаю с чем связанно.
    Торможу на процесе понимания как взаимодействует PowerShell с ActiveDirectory.

    Будушее за самураями.
    2 февраля 2010 г. 17:52
  • > Но покоманде help about_pssnapin выводит ошибку, не понимаю с чем связанно

    может, все-таки, предадите огласке сообщение об ошибке, а то мои телепатические возможности сильно ограничены.
    3 февраля 2010 г. 6:31
  • Get-Help : Cannot find Help for topic "about_pssnapin".
    At line:17 char:19
    +           Get-Help <<<<  @CommandLineParameters | more.com
    
    Вот код ошибки.
    Будушее за самураями.
    3 февраля 2010 г. 8:23
  • что-то странное у вас происходит.

    а если команду написать полностью: help about_pssnapins, каков будет результат?

    3 февраля 2010 г. 9:39
  • Результат тот-же
    Get-Help : Cannot find Help for topic "about_pssnapins".
    At line:17 char:19
    +           Get-Help <<<<  @CommandLineParameters | more.com
    Я пробую по своему.
    PS C:\> get-help | Get-PSSnapin


    Name        : Microsoft.PowerShell.Core
    PSVersion   : 2.0
    Description : This Windows PowerShell snap-in contains Windows PowerShell management cmdlets used to manage components
                  of Windows PowerShell.

    Name        : Microsoft.PowerShell.Host
    PSVersion   : 2.0
    Description : This Windows PowerShell snap-in contains cmdlets used by the Windows PowerShell host.

    Name        : Microsoft.PowerShell.Management
    PSVersion   : 2.0
    Description : This Windows PowerShell snap-in contains management cmdlets used to manage Windows components.

    Name        : Microsoft.PowerShell.Security
    PSVersion   : 2.0
    Description : This Windows PowerShell snap-in contains cmdlets to manage Windows PowerShell security.

    Name        : Microsoft.PowerShell.Utility
    PSVersion   : 2.0
    Description : This Windows PowerShell snap-in contains utility Cmdlets used to manipulate data.

    Get-Help : Cannot find Help for topic "default".
    At line:1 char:9
    + get-help <<<<  | Get-PSSnapin
    тоже ошибка.
    Как быть не знаю.
    Устанавливал PowerTab ни как не может повлиять?
    Будушее за самураями.
    3 февраля 2010 г. 9:48
  • вообще-то у меня он также установлен, но, на всякий случай (для проверки), можно временно очистить профиль текущего и всех пользователей.

    3 февраля 2010 г. 9:53
  • Можете подсказать как правильно сделать?
    Будушее за самураями.
    3 февраля 2010 г. 10:00
  • IIRC, полный путь к профилю текущег опользователя хранится в переменной $profile, а профиль всех пользователей хранится в папке, на которую ссылается переменная $PSHOME, в файле, чье имя содержит слово profile

    3 февраля 2010 г. 10:10
  • тоесть просто удалить каталок в профиле?
    Будушее за самураями.
    3 февраля 2010 г. 10:13
  • тоесть просто удалить каталок в профиле?
    Будушее за самураями.

    профиль - это файл, а не каталог. я писал "можно временно очистить профиль"
    3 февраля 2010 г. 10:23
  • почистил профиль
    опять тоже самое
    Get-Help : Cannot find Help for topic "about_pssnapins".
    At line:17 char:19
    +           Get-Help <<<<  @CommandLineParameters | more.com
    Какие будут идей?
    может попробовать переустановить все ребутнуться и заново?

    Будушее за самураями.
    3 февраля 2010 г. 11:37