none
пустое значение при выполнении скрипта в powershell

    Вопрос

  • Здравствуйте! подскажите пожалуйста, есть скрипт (Get-WMIObject -Class Win32_ComputerSystem -Computer "Comp1"|Select-Object Username) который выполняет запрос, зная имя компа или его ip-адрес, он выдает имя учетной записи, залогиневшегося в системе и он хорошо выполняет на windows 10, а как теперь можно этот скрипт преобразовать, чтобы он выполнялся в powershell на Linux (Ubuntu 18.04) и можно ли на Linux выполнять такие скрипты? добавлю, при выполнении этого скрипта на Linux (Ubuntu 18.04) пришлось отредактировать в таком виде - ('Get-WMIObject -Class Win32_ComputerSystem -Computer "Comp1"'|Select-Object Username) и при выполнении показывает строчку Username, но информацию больше никакую не выдает, может по-другому этот скрипт отредактировать или есть может какой-нибудь другой способ на Linux (Ubuntu 18.04) сделать запрос о выводе информации на удаленной машине в домене, зная имя или ip-адрес компьютера, определить какой пользователь залогинился в системе?


    11 января 2019 г. 19:37

Ответы

  • Установить пакеты на Ubuntu:
    wmi - https://askubuntu.com/questions/885407/installing-wmic-on-ubuntu-16-04-lts
    ldap-utils - https://askubuntu.com/questions/869618/how-to-install-ldapsearch-on-16-04

    Скрипт получает из AD все пк с operatingsystem=Windows 10* и получает c них текущего пользователя.

    # Пользователь которого ищем
    param(
    	$UFind
    )
    
    # Получаем все компьютеры с Windows 10 c DC:
    	# DN пользователя от которого подключаемся
    	$user = 'cn=Administrator,cn=users,dc=contoso,dc=com'
    	# Пароль пользователя
    	$pass = 'P@$$w0rd1'
    	# IP/Name Domain Controller
    	$server = '192.168.0.100'
    	# Корень домена
    	$domain = 'dc=contoso,dc=com'
    	# Фильтр по OS
    	$filter = '(operatingsystem=Windows 10*)'
    	# Список компьютеров из AD
    	$pc = ldapsearch -x -h $server -D $user -w $pass -b $domain -s sub $filter dnshostname | where {$_ -match '^dnshostname'} | foreach {$_.split(":")[1].trim()}
    
    # Опрашиваем компьютеры с Windows 10
    	# Domain/UserName%Password для административной записи
    	$cred = 'Contoso/Administrator%P@$$w0rd1'
    	# Получаем данные
    	$r = $pc | foreach {
    		
    		$u = wmic -U $cred //$_ "select UserName from Win32_ComputerSystem" | where {$_ -match "\\"} | foreach {$_.split("|")[1]}
    		if($u) {
    			[PSCustomObject]@{
    				UserName = $u
    				DNS = $_
    				IP = [System.Net.Dns]::GetHostByName($_).AddressList[0].IPAddressToString
    			}
    		}
    	}
    	
    	# Фильтруем
    	$r | Where {$_.UserName -match $UFind}

    Пример Вывода:

    UserName     DNS                  IP
    --------     ---                  --
    CONTOSO\alex SRV-DC01.contoso.com 192.168.0.100

    • Предложено в качестве ответа Vector BCOModerator 13 января 2019 г. 18:24
    • Помечено в качестве ответа Vector BCOModerator 14 января 2019 г. 14:22
    13 января 2019 г. 18:19
    Отвечающий

Все ответы

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

    Тогда может быть кто то сможет/пожелает прочитать больше тем пару строк и сможет ответить на ваш вопрос.


    This posting is provided "AS IS" with no warranties, and confers no rights.

    12 января 2019 г. 2:17
    Модератор
  • Здравствуйте!

    Linuxa нет под руками, чтобы проверить, а  в PS6 даёт аналогичный результат. Этот командлет там просто не работает.

    https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Management/Get-WmiObject

    Starting in Windows PowerShell 3.0, this cmdlet has been superseded by Get-CimInstance  (начиная с PS3 этот командлет перекрыт Get-Ciminstance)

    https://docs.microsoft.com/ru-ru/previous-versions/windows/powershell-scripting/jj590758(v=wps.630)

    Попробуйте через Get-Ciminstance:

    Example 7: Get CIM instances from remote computer

    This command retrieves the CIM instances of a class named Win32_ComputerSystem from the remote computers named Server01 and Server02.

    Get-CimInstance -ClassName Win32_ComputerSystem -ComputerName Server01,Server02


    12 января 2019 г. 9:10
  • На этом форуме есть знатоки Linux, может нужно написать скрипт в bash и выполнять в терминале (командной строке), чем выполнять такой скрипт в powershell?
    12 января 2019 г. 10:21
  • 1 wmi - windows management instrumentation (акцент на первом слове), хз насколько глубоко портирован пош на линуксе но я бы сильно не удивлялся тому что get-wmiobject не работает на линуксе

    2 в вашей второй команде есть ошибка - после слова Comp1 у вас стоит 2 кавычки и одна зачем-то стоит в начале команды. Если вы эту отредактированную команду с лишними кавычками выполните на win10 вы получите ровно такой же результат


    The opinion expressed by me is not an official position of Microsoft

    12 января 2019 г. 10:39
    Модератор
  • 1 wmi - windows management instrumentation (акцент на первом слове), хз насколько глубоко портирован пош на линуксе но я бы сильно не удивлялся тому что get-wmiobject не работает на линуксе

    2 в вашей второй команде есть ошибка - после слова Comp1 у вас стоит 2 кавычки и одна зачем-то стоит в начале команды. Если вы эту отредактированную команду с лишними кавычками выполните на win10 вы получите ровно такой же результат


    The opinion expressed by me is not an official position of Microsoft


    если выполнять скрипт без кавычек на Ubuntu,то он не работает, но работает на Windows 10,а если кавычки добавить в начале скрипта и после слова "Comp", то скрипт работает, но не выводит информацию(например, поле выполнения скрипта выводится слово Username и больше ничего, а должно быть после слова Username - имя учетной записи) тогда получается за место get-wmiobject, нужно заменить на get-siminstance, а остальное в скрипте можно оставить?

    12 января 2019 г. 12:24
  • Здравствуйте! подскажите пожалуйста, есть скрипт (Get-WMIObject -Class Win32_ComputerSystem -Computer "Comp1"|Select-Object Username) который выполняет запрос, зная имя компа или его ip-адрес, он выдает имя учетной записи, залогиневшегося в системе и он хорошо выполняет на windows 10, а как теперь можно этот скрипт преобразовать, чтобы он выполнялся в powershell на Linux (Ubuntu 18.04) и можно ли на Linux выполнять такие скрипты? добавлю, при выполнении этого скрипта на Linux (Ubuntu 18.04) пришлось отредактировать в таком виде - ('Get-WMIObject -Class Win32_ComputerSystem -Computer "Comp1"'|Select-Object Username) и при выполнении показывает строчку Username, но информацию больше никакую не выдает, может по-другому этот скрипт отредактировать или есть может какой-нибудь другой способ на Linux (Ubuntu 18.04) сделать запрос о выводе информации на удаленной машине в домене, зная имя или ip-адрес компьютера, определить какой пользователь залогинился в системе?


    Класс WMI Win32_ComputerSystem специфичен для ОС Windows (это хотя бы по его названию видно) и не является частью кроссплатформенной модели DMTF CIM. Так что он, весьма вероятно, в Linux не реализован (подробности надо выяснять не здесь, в документации на вашу конкретную ОС на базе ядра Linux)

    Базовый же для Win32_ComputerSystem класс модели DMTF CIM свойства Username не содержит, поэтому для решения вашей задачи он не годится.


    Слава России!

    12 января 2019 г. 12:52
  • Здравствуйте! подскажите пожалуйста, есть скрипт (Get-WMIObject -Class Win32_ComputerSystem -Computer "Comp1"|Select-Object Username) который выполняет запрос, зная имя компа или его ip-адрес, он выдает имя учетной записи, залогиневшегося в системе и он хорошо выполняет на windows 10, а как теперь можно этот скрипт преобразовать, чтобы он выполнялся в powershell на Linux (Ubuntu 18.04) и можно ли на Linux выполнять такие скрипты? добавлю, при выполнении этого скрипта на Linux (Ubuntu 18.04) пришлось отредактировать в таком виде - ('Get-WMIObject -Class Win32_ComputerSystem -Computer "Comp1"'|Select-Object Username) и при выполнении показывает строчку Username, но информацию больше никакую не выдает, может по-другому этот скрипт отредактировать или есть может какой-нибудь другой способ на Linux (Ubuntu 18.04) сделать запрос о выводе информации на удаленной машине в домене, зная имя или ip-адрес компьютера, определить какой пользователь залогинился в системе?


    Класс WMI Win32_ComputerSystem специфичен для ОС Windows (это хотя бы по его названию видно) и не является частью кроссплатформенной модели DMTF CIM. Так что он, весьма вероятно, в Linux не реализован (подробности надо выяснять не здесь, в документации на вашу конкретную ОС на базе ядра Linux)

    Базовый же для Win32_ComputerSystem класс модели DMTF CIM свойства Username не содержит, поэтому для решения вашей задачи он не годится.


    Слава России!


    как же должен выглядеть скрипт, чтобы он выполнялся на Linux?

    12 января 2019 г. 13:39
  • # Установить модуль
    Install-Module Posh-SSH -Scope CurrentUser -Force
    
    # Создать сессию
    $s = New-SSHSession -ComputerName 192.168.0.242 -Credential (Get-Credential)
    $cmd = 'users | awk ''BEGIN{RS=" "}{$1=$1}1'' | grep -v $USER'
    $r = Invoke-SSHCommand -Command $cmd -SSHSession $s
    $r.Output

    • Предложено в качестве ответа Vector BCOModerator 12 января 2019 г. 14:54
    12 января 2019 г. 14:54
    Отвечающий
  • # Установить модуль
    Install-Module Posh-SSH -Scope CurrentUser -Force
    
    # Создать сессию
    $s = New-SSHSession -ComputerName 192.168.0.242 -Credential (Get-Credential)
    $cmd = 'users | awk ''BEGIN{RS=" "}{$1=$1}1'' | grep -v $USER'
    $r = Invoke-SSHCommand -Command $cmd -SSHSession $s
    $r.Output


    подскажите пожалуйста, это готовый скрипт или это отдельные команды,  которые выполняются в терминале (cmd) или в powershellе на Ubuntu? в 1 пункте, где нужно установить модуль,  нужно ввести эту команду в терминале (cmd) или в powershellе? а во 2, где нужно создать сессию, это готовый скрипт или в каждой строке отдельные команды, которые нужно вводить в терминале (cmd) или в powershellе?




    12 января 2019 г. 17:16
  • этот скрипт на вашу win машину установит ssh модуль => выполнит 1 команду (которая распарсит результат и вертет его в пош на вашей win машине

    если вы хотите с убунты выполнять скрипты на других убунтах, то в линуксе есть на то другие инструменты описанные в доках и форумах линукс


    The opinion expressed by me is not an official position of Microsoft

    12 января 2019 г. 18:09
    Модератор
  • этот скрипт на вашу win машину установит ssh модуль => выполнит 1 команду (которая распарсит результат и вертет его в пош на вашей win машине

    если вы хотите с убунты выполнять скрипты на других убунтах, то в линуксе есть на то другие инструменты описанные в доках и форумах линукс


    The opinion expressed by me is not an official position of Microsoft


    уважаемые форумчане, мне нужно с линуксовой машины (Ubuntu) запустить скрипт и вытащить информацию с виндовой машины, то есть, зная имя компа или ip-адрес его, узнать имя учетной записи, залогиневшейся в системе, линуксовая и виндовая машины обе в домене, это можно сделать или только с линуксовой на линуксовых машинах и с виндовой на виндовых будет выполняться скрипт?



    12 января 2019 г. 20:35
  • вообще все можно главное чтобы задача была поставлена правильно ;)

    предположу что на линуксовом поше вы можете выполнить invoke-command, а уже в нем выполнить то что вам необходимо на виндовой машине, главное не создавайте duble hop`ов


    The opinion expressed by me is not an official position of Microsoft

    12 января 2019 г. 20:59
    Модератор
  • WMI,CIM  - не поддерживаются на linux в PowerShell Core. (The CIM cmdlets are not available on non-Windows. There are currently no plans to port the CIM cmdlets to non-Windows.)

    Можно использовать PowerShell Remoting c транспортом SSH, но требуются доп. установка софта на Windows машину (https://docs.microsoft.com/en-us/powershell/scripting/learn/remoting/running-remote-commands?view=powershell-6).

    Самый простой вариант установить wmi-клиент под linux - https://askubuntu.com/questions/885407/installing-wmic-on-ubuntu-16-04-lts

    #  wmic -U 'Contoso/Administrator%P@$$w0rd1' //192.168.0.100 "select UserName from Win32_ComputerSystem"
    CLASS: Win32_ComputerSystem
    Name|UserName
    SRV-DC01|CONTOSO\alex
    #  wmic -U 'Contoso/Administrator%P@$$w0rd1' //192.168.0.100 "select UserName from Win32_ComputerSystem" | grep '\\' | cut -d'|' -f2
    CONTOSO\alex



    • Изменено KazunEditor 12 января 2019 г. 22:04
    12 января 2019 г. 21:58
    Отвечающий
  • WMI,CIM  - не поддерживаются на linux в PowerShell Core. (The CIM cmdlets are not available on non-Windows. There are currently no plans to port the CIM cmdlets to non-Windows.)

    Можно использовать PowerShell Remoting c транспортом SSH, но требуются доп. установка софта на Windows машину (https://docs.microsoft.com/en-us/powershell/scripting/learn/remoting/running-remote-commands?view=powershell-6).

    Самый простой вариант установить wmi-клиент под linux - https://askubuntu.com/questions/885407/installing-wmic-on-ubuntu-16-04-lts

    #  wmic -U 'Contoso/Administrator%P@$$w0rd1' //192.168.0.100 "select UserName from Win32_ComputerSystem"
    CLASS: Win32_ComputerSystem
    Name|UserName
    SRV-DC01|CONTOSO\alex
    #  wmic -U 'Contoso/Administrator%P@$$w0rd1' //192.168.0.100 "select UserName from Win32_ComputerSystem" | grep '\\' | cut -d'|' -f2
    CONTOSO\alex




    в итоге получается, что на linuxе в powershelle скрипт не выполнить? зачем на компьютер с Windows 10 устанавливать powershell remoting с транспортом ssh, если нам нужно выполнить скрипт на linux? или powershell remoting с транспортом ssh чтобы был установлен и на линуксовом и на виндовом компе?а откуда скачать и как установить на linux powershell remoting с транспортом ssh?или же лучше нужно на linux установить wmi-клиент? а где взять wmi-клиент для Ubuntu 18.04 lts?






    12 января 2019 г. 23:50
  • какой скрипт не выполнить? gwmi не выполнить, так как этот командлет не портирован, но есть другие методы описанные Kazun'oм. В чем суть вашей задачи?

    The opinion expressed by me is not an official position of Microsoft

    12 января 2019 г. 23:57
    Модератор
  • какой скрипт не выполнить? gwmi не выполнить, так как этот командлет не портирован, но есть другие методы описанные Kazun'oм. В чем суть вашей задачи?

    The opinion expressed by me is not an official position of Microsoft


    суть задачи состоит в том, как узнать с линуксового компа на удаленном компе с Windows 10, зная его имя или ip-адрес, узнать имя пользователя, залогиневшегося в системе на удаленной компе с Windows 10?
    13 января 2019 г. 0:37
  • какой скрипт не выполнить? gwmi не выполнить, так как этот командлет не портирован, но есть другие методы описанные Kazun'oм. В чем суть вашей задачи?


    The opinion expressed by me is not an official position of Microsoft


    суть задачи состоит в том, как узнать с линуксового компа на удаленном компе с Windows 10, зная его имя или ip-адрес, узнать имя пользователя, залогиневшегося в системе на удаленной компе с Windows 10?

    1) вам это нужно сделать 1 раз?

    2) вам нужно получить результат только с одного windows 10?

    3) если ответ на предыдущий вопрос отрицательный (результат нужен более чем с одной машины), то все ли машины у вас с windows 10?

    Если ответ на первый вопрос "Да", то оба предложенных решения одинаковы по трудозатратам - ставите на линукс wmi клиент или обновляете пош на 10 (делаете одно действие)

    Если ответ на второй вопрос отрицательный, то установить wmic на линукс проще (одно действие), нежели обновлять пош на всех клиентах (Х действий, где Х = количеству клиентов)

    Если ответ на 3 вопрос отрицательный и возможны машины на win8 и/или 7 то пош у вас обновить скорее всего не получиться до требуемой версии.

    Вопрос про суть задачи был более глобальным: зачем вам требуется столь странная связка, учитывая что есть недопонимание структур обеих ос и коммуникации между ними?

     


    The opinion expressed by me is not an official position of Microsoft


    13 января 2019 г. 1:07
    Модератор
  • У меня семёрка, PS6 вполне себе ставится. Причем PS6 c WMF не интегрирована, так что 2 версии одновременно могу использовать ))

    13 января 2019 г. 1:58
  • какой скрипт не выполнить? gwmi не выполнить, так как этот командлет не портирован, но есть другие методы описанные Kazun'oм. В чем суть вашей задачи?


    The opinion expressed by me is not an official position of Microsoft


    суть задачи состоит в том, как узнать с линуксового компа на удаленном компе с Windows 10, зная его имя или ip-адрес, узнать имя пользователя, залогиневшегося в системе на удаленной компе с Windows 10?

    1) вам это нужно сделать 1 раз?

    2) вам нужно получить результат только с одного windows 10?

    3) если ответ на предыдущий вопрос отрицательный (результат нужен более чем с одной машины), то все ли машины у вас с windows 10?

    Если ответ на первый вопрос "Да", то оба предложенных решения одинаковы по трудозатратам - ставите на линукс wmi клиент или обновляете пош на 10 (делаете одно действие)

    Если ответ на второй вопрос отрицательный, то установить wmic на линукс проще (одно действие), нежели обновлять пош на всех клиентах (Х действий, где Х = количеству клиентов)

    Если ответ на 3 вопрос отрицательный и возможны машины на win8 и/или 7 то пош у вас обновить скорее всего не получиться до требуемой версии.

    Вопрос про суть задачи был более глобальным: зачем вам требуется столь странная связка, учитывая что есть недопонимание структур обеих ос и коммуникации между ними?

     


    The opinion expressed by me is not an official position of Microsoft



    делать придется не один раз, а несколько, результат получать не только с одного компьютера,  а с нескольких и все компьютеры на Windows 10, что тогда будет более оптимальным и проще всего?


    13 января 2019 г. 8:43
  • делать придется не один раз, а несколько, результат получать не только с одного компьютера,  а с нескольких и все компьютеры на Windows 10, что тогда будет более оптимальным и проще всего? 

    прочтите пожалуйста внимательно ответ Казуна или мой. Уже 2 раза об этом написали

    The opinion expressed by me is not an official position of Microsoft

    13 января 2019 г. 12:15
    Модератор
  • а можно сделать на линуксовом компьютере через wmi-клиент скрипт (запрос), зная учетную запись пользователя, узнать имя и ip-адрес компьютера на удаленном компьютере с Windows 10, оба компьютера в домене и учетная запись пользователя тоже в домене, как должен выглядеть скрипт (запрос)?

    13 января 2019 г. 14:21
  • первым запросом из примера Казуна вытягиваете значение со всех машин, а далее грепуете по пользователю

    The opinion expressed by me is not an official position of Microsoft

    13 января 2019 г. 14:37
    Модератор
  • первым запросом из примера Казуна вытягиваете значение со всех машин, а далее грепуете по пользователю

    The opinion expressed by me is not an official position of Microsoft


    можете пожалуйста выложить этот готовый скрипт, привести ваш пример через wmi-клиент, зная учетную запись пользователя, определить имя и ip-адрес компьютера?

    13 января 2019 г. 16:30
  • Andrey, у меня нет инфраструктуры для тестов а из головы готовый скрипт без ошибок я увы не напишу.

    Потратить час на инфраструктуру и тесты конечно можно, но  складывается впечатление что вы в решении своей задачи не принимаете участие, а лишь перекладываете ее (задачу) на чужие плечи

    Зачем вы занимаетесь этой задачей?

    Мы с вами решали ровно туже самую задачу в вашей соседней теме, с одним отличием - делали это с win хоста


    The opinion expressed by me is not an official position of Microsoft

    13 января 2019 г. 16:54
    Модератор
  • Andrey, у меня нет инфраструктуры для тестов а из головы готовый скрипт без ошибок я увы не напишу.

    Потратить час на инфраструктуру и тесты конечно можно, но  складывается впечатление что вы в решении своей задачи не принимаете участие, а лишь перекладываете ее (задачу) на чужие плечи

    Зачем вы занимаетесь этой задачей?

    Мы с вами решали ровно туже самую задачу в вашей соседней теме, с одним отличием - делали это с win хоста


    The opinion expressed by me is not an official position of Microsoft


    Да, все верно, но я всего лишь прошу помочь сделать тоже самое через wmi-клиент на линуксе, Уважаемые форумчане и админы, подскажите пожалуйста какой нужно сделать запрос через wmi-клиент на линуксе,зная учетную запись пользователя, определить имя и ip-адрес компьютера? Уважаемый админ "Казун",  вы делали пример, где через wmi-клиент делали запрос, зная имя и ip-адрес компьютера, определить имя учетной записи пользователя, а теперь можно создать запрос через wmi-клиент, зная учетную запись пользователя, узнать имя и ip-адрес компьютера?
    13 января 2019 г. 17:31

  • Да, все верно, но я всего лишь прошу помочь сделать тоже самое через wmi-клиент на линуксе, Уважаемые форумчане и админы, подскажите пожалуйста какой нужно сделать запрос через wmi-клиент на линуксе,зная учетную запись пользователя, определить имя и ip-адрес компьютера,
    Вы просите не помочь, а сделать за вас.

    The opinion expressed by me is not an official position of Microsoft

    13 января 2019 г. 17:37
    Модератор
  • Установить пакеты на Ubuntu:
    wmi - https://askubuntu.com/questions/885407/installing-wmic-on-ubuntu-16-04-lts
    ldap-utils - https://askubuntu.com/questions/869618/how-to-install-ldapsearch-on-16-04

    Скрипт получает из AD все пк с operatingsystem=Windows 10* и получает c них текущего пользователя.

    # Пользователь которого ищем
    param(
    	$UFind
    )
    
    # Получаем все компьютеры с Windows 10 c DC:
    	# DN пользователя от которого подключаемся
    	$user = 'cn=Administrator,cn=users,dc=contoso,dc=com'
    	# Пароль пользователя
    	$pass = 'P@$$w0rd1'
    	# IP/Name Domain Controller
    	$server = '192.168.0.100'
    	# Корень домена
    	$domain = 'dc=contoso,dc=com'
    	# Фильтр по OS
    	$filter = '(operatingsystem=Windows 10*)'
    	# Список компьютеров из AD
    	$pc = ldapsearch -x -h $server -D $user -w $pass -b $domain -s sub $filter dnshostname | where {$_ -match '^dnshostname'} | foreach {$_.split(":")[1].trim()}
    
    # Опрашиваем компьютеры с Windows 10
    	# Domain/UserName%Password для административной записи
    	$cred = 'Contoso/Administrator%P@$$w0rd1'
    	# Получаем данные
    	$r = $pc | foreach {
    		
    		$u = wmic -U $cred //$_ "select UserName from Win32_ComputerSystem" | where {$_ -match "\\"} | foreach {$_.split("|")[1]}
    		if($u) {
    			[PSCustomObject]@{
    				UserName = $u
    				DNS = $_
    				IP = [System.Net.Dns]::GetHostByName($_).AddressList[0].IPAddressToString
    			}
    		}
    	}
    	
    	# Фильтруем
    	$r | Where {$_.UserName -match $UFind}

    Пример Вывода:

    UserName     DNS                  IP
    --------     ---                  --
    CONTOSO\alex SRV-DC01.contoso.com 192.168.0.100

    • Предложено в качестве ответа Vector BCOModerator 13 января 2019 г. 18:24
    • Помечено в качестве ответа Vector BCOModerator 14 января 2019 г. 14:22
    13 января 2019 г. 18:19
    Отвечающий
  • Установить пакеты на Ubuntu:
    wmi - https://askubuntu.com/questions/885407/installing-wmic-on-ubuntu-16-04-lts
    ldap-utils - https://askubuntu.com/questions/869618/how-to-install-ldapsearch-on-16-04

    Скрипт получает из AD все пк с operatingsystem=Windows 10* и получает c них текущего пользователя.

    # Пользователь которого ищем
    param(
    	$UFind
    )
    
    # Получаем все компьютеры с Windows 10 c DC:
    	# DN пользователя от которого подключаемся
    	$user = 'cn=Administrator,cn=users,dc=contoso,dc=com'
    	# Пароль пользователя
    	$pass = 'P@$$w0rd1'
    	# IP/Name Domain Controller
    	$server = '192.168.0.100'
    	# Корень домена
    	$domain = 'dc=contoso,dc=com'
    	# Фильтр по OS
    	$filter = '(operatingsystem=Windows 10*)'
    	# Список компьютеров из AD
    	$pc = ldapsearch -x -h $server -D $user -w $pass -b $domain -s sub $filter dnshostname | where {$_ -match '^dnshostname'} | foreach {$_.split(":")[1].trim()}
    
    # Опрашиваем компьютеры с Windows 10
    	# Domain/UserName%Password для административной записи
    	$cred = 'Contoso/Administrator%P@$$w0rd1'
    	# Получаем данные
    	$r = $pc | foreach {
    		
    		$u = wmic -U $cred //$_ "select UserName from Win32_ComputerSystem" | where {$_ -match "\\"} | foreach {$_.split("|")[1]}
    		if($u) {
    			[PSCustomObject]@{
    				UserName = $u
    				DNS = $_
    				IP = [System.Net.Dns]::GetHostByName($_).AddressList[0].IPAddressToString
    			}
    		}
    	}
    	
    	# Фильтруем
    	$r | Where {$_.UserName -match $UFind}

    Пример Вывода:

    UserName     DNS                  IP
    --------     ---                  --
    CONTOSO\alex SRV-DC01.contoso.com 192.168.0.100


    подскажите пожалуйста, выше описанное это полностью скрипт, который нужно сохранить в расширении ps1 и запустить в powershellе на линуксе или это отдельные команды в терминале (cmd) через wmi-клиент?


    13 января 2019 г. 18:44
  • подскажите пожалуйста, выше описанное это полностью скрипт, который нужно сохранить в расширении ps1 и запустить в powershellе на линуксе или это отдельные команды в терминале (cmd) через wmi-клиент?

    Полный скрипт, поправить на свои значения, запускать в PowerShell Core(pwsh) на linux.
    13 января 2019 г. 18:55
    Отвечающий
  • подскажите пожалуйста, выше описанное это полностью скрипт, который нужно сохранить в расширении ps1 и запустить в powershellе на линуксе или это отдельные команды в терминале (cmd) через wmi-клиент?

    Полный скрипт, поправить на свои значения, запускать в PowerShell Core(pwsh) на linux.

    где зеленым цветом помечено, туда вставляю свои значения, а красным цветом прописывать не нужно? в скрипте, где пункт # Список компьютеров из Ad зеленым цветом прописано dnshostname, какое значение туда нужно свое указать, dns контроллера домена?
    13 января 2019 г. 19:11
  • Изменить значения только: $user, $pass, $server, $domain, $cred

    Пример запуска:

    .\findu.ps1 alex

    13 января 2019 г. 19:16
    Отвечающий
  • Изменить значения только: $user, $pass, $server, $domain, $cred

    Пример запуска:

    .\findu.ps1 alex


    где красным цветом прописано в скрипте прописывать не нужно? будьте добры, вы можете сохранить скрипт в расширении ps1 и выложить сюда, я просто не очень умею писать и создавать скрипты, заранее буду вам благодарен.
    13 января 2019 г. 19:48
  • зачем вы занимаетесь этой задачей?

    какая ваша роль в вашей компании?

    у вас с блокнотом возникают трудности?


    The opinion expressed by me is not an official position of Microsoft

    13 января 2019 г. 19:58
    Модератор
  • зачем вы занимаетесь этой задачей?

    какая ваша роль в вашей компании?

    у вас с блокнотом возникают трудности?


    The opinion expressed by me is not an official position of Microsoft


    а же говорю, что плохо владею написанием скриптов, поэтому и прошу его сохранить в расширении ps1, просто могу ошибиться, красным цветом мне не понятно, нужно их прописывать или нет, поэтому вас и прошу сохранить и выложить на яндекс или гугл диск, задача заключается в том, что нужно для удаленных подключений к пользователям, потому что большинство пользователей не знают какой у них ip-адрес компьютера или не знают какое имя компьютера,  для этого и выручает этот скрипт



    13 января 2019 г. 20:10
  • Вам предоставили готовое решение написанное за вас, показали какие параметры стоит изменить, вам осталось скопировать решение в блокнот и сохранить его. Попросите старшего и более продвинутого товарища вам помочь с блокнотом. Все когда-то были на стадии обучения, и не все понимали, но если вам лень погуглить и попробовать, то чем вам можно помочь?

    Красным цветом обозначены комментарии и они начинаются с # - вы их можете менять в свое удовольствие, но на функционал это никак не влияет.

    На этом форуме ваш тезка уже перепробовал множество решений и технологий, и при этом он развивается семимильными шагами, вы же решаете одну и туже задачу раз в 3 месяца, при этом упорно не хотите разобраться в вашей же задаче.


    The opinion expressed by me is not an official position of Microsoft

    13 января 2019 г. 20:24
    Модератор
  • Вам предоставили готовое решение написанное за вас, показали какие параметры стоит изменить, вам осталось скопировать решение в блокнот и сохранить его. Попросите старшего и более продвинутого товарища вам помочь с блокнотом. Все когда-то были на стадии обучения, и не все понимали, но если вам лень погуглить и попробовать, то чем вам можно помочь?

    Красным цветом обозначены комментарии и они начинаются с # - вы их можете менять в свое удовольствие, но на функционал это никак не влияет.

    На этом форуме ваш тезка уже перепробовал множество решений и технологий, и при этом он развивается семимильными шагами, вы же решаете одну и туже задачу раз в 3 месяца, при этом упорно не хотите разобраться в вашей же задаче.


    The opinion expressed by me is not an official position of Microsoft


    Спасибо за помощь, а скрипт тестировали,он полностью рабочий и выполняет полностью запрос на linuxе в powershellе? то что помечено красным и начинается с #, то это можно удалить из скрипта?

    13 января 2019 г. 21:24
  • Установить пакеты на Ubuntu:
    wmi - https://askubuntu.com/questions/885407/installing-wmic-on-ubuntu-16-04-lts
    ldap-utils - https://askubuntu.com/questions/869618/how-to-install-ldapsearch-on-16-04

    Скрипт получает из AD все пк с operatingsystem=Windows 10* и получает c них текущего пользователя.

    # Пользователь которого ищем
    param(
    	$UFind
    )
    
    # Получаем все компьютеры с Windows 10 c DC:
    	# DN пользователя от которого подключаемся
    	$user = 'cn=Administrator,cn=users,dc=contoso,dc=com'
    	# Пароль пользователя
    	$pass = 'P@$$w0rd1'
    	# IP/Name Domain Controller
    	$server = '192.168.0.100'
    	# Корень домена
    	$domain = 'dc=contoso,dc=com'
    	# Фильтр по OS
    	$filter = '(operatingsystem=Windows 10*)'
    	# Список компьютеров из AD
    	$pc = ldapsearch -x -h $server -D $user -w $pass -b $domain -s sub $filter dnshostname | where {$_ -match '^dnshostname'} | foreach {$_.split(":")[1].trim()}
    
    # Опрашиваем компьютеры с Windows 10
    	# Domain/UserName%Password для административной записи
    	$cred = 'Contoso/Administrator%P@$$w0rd1'
    	# Получаем данные
    	$r = $pc | foreach {
    		
    		$u = wmic -U $cred //$_ "select UserName from Win32_ComputerSystem" | where {$_ -match "\\"} | foreach {$_.split("|")[1]}
    		if($u) {
    			[PSCustomObject]@{
    				UserName = $u
    				DNS = $_
    				IP = [System.Net.Dns]::GetHostByName($_).AddressList[0].IPAddressToString
    			}
    		}
    	}
    	
    	# Фильтруем
    	$r | Where {$_.UserName -match $UFind}

    Пример Вывода:

    UserName     DNS                  IP
    --------     ---                  --
    CONTOSO\alex SRV-DC01.contoso.com 192.168.0.100


    вы давали ссылку, где нужно установить пакеты на Ubuntu, ссылка на пакет ldap-utils, ссылка почему то не рабочая? этот пакет обязательно устанавливать, если компьютер на Ubuntu находится в домене?

    13 января 2019 г. 21:51
  • Установить пакеты на Ubuntu:
    wmi - https://askubuntu.com/questions/885407/installing-wmic-on-ubuntu-16-04-lts
    ldap-utils - https://askubuntu.com/questions/869618/how-to-install-ldapsearch-on-16-04

    Скрипт получает из AD все пк с operatingsystem=Windows 10* и получает c них текущего пользователя.

    # Пользователь которого ищем
    param(
    	$UFind
    )
    
    # Получаем все компьютеры с Windows 10 c DC:
    	# DN пользователя от которого подключаемся
    	$user = 'cn=Administrator,cn=users,dc=contoso,dc=com'
    	# Пароль пользователя
    	$pass = 'P@$$w0rd1'
    	# IP/Name Domain Controller
    	$server = '192.168.0.100'
    	# Корень домена
    	$domain = 'dc=contoso,dc=com'
    	# Фильтр по OS
    	$filter = '(operatingsystem=Windows 10*)'
    	# Список компьютеров из AD
    	$pc = ldapsearch -x -h $server -D $user -w $pass -b $domain -s sub $filter dnshostname | where {$_ -match '^dnshostname'} | foreach {$_.split(":")[1].trim()}
    
    # Опрашиваем компьютеры с Windows 10
    	# Domain/UserName%Password для административной записи
    	$cred = 'Contoso/Administrator%P@$$w0rd1'
    	# Получаем данные
    	$r = $pc | foreach {
    		
    		$u = wmic -U $cred //$_ "select UserName from Win32_ComputerSystem" | where {$_ -match "\\"} | foreach {$_.split("|")[1]}
    		if($u) {
    			[PSCustomObject]@{
    				UserName = $u
    				DNS = $_
    				IP = [System.Net.Dns]::GetHostByName($_).AddressList[0].IPAddressToString
    			}
    		}
    	}
    	
    	# Фильтруем
    	$r | Where {$_.UserName -match $UFind}

    Пример Вывода:

    UserName     DNS                  IP
    --------     ---                  --
    CONTOSO\alex SRV-DC01.contoso.com 192.168.0.100


    при выполнении скрипта выдается следующая ошибка - ldap_bind: Invalid credentials (49)
        additional info: 80090308: LdapErr: DSID-0C0903C8, comment: AcceptSecurityContext error, data 52e, v23f0
    как это можно исправить, подскажите пожалуйста?
    14 января 2019 г. 7:53
  • наконец-то вы попробовали

    проверяйте правильность написания вашего пользюка и пароля в переменных $user и $password


    The opinion expressed by me is not an official position of Microsoft

    14 января 2019 г. 8:16
    Модератор
  • наконец-то вы попробовали

    проверяйте правильность написания вашего пользюка и пароля в переменных $user и $password


    The opinion expressed by me is not an official position of Microsoft

    я точно правильно ввожу имя пользователя и пароль, а ошибка именно об этом гласит?
    14 января 2019 г. 8:44
  • "invalid credentials" точно об этом гласит

    The opinion expressed by me is not an official position of Microsoft

    14 января 2019 г. 8:56
    Модератор
  • "invalid credentials" точно об этом гласит

    The opinion expressed by me is not an official position of Microsoft

    Invalid credentials (49) в какой строчке этого скрипта происходит ошибка? имя пользователя и пароль там нужно в 2-х строчках вводить, а вот это значение - AcceptSecurityContext error, data 52e, v23f0 о чем говорит, на этом форуме было описание об ошибке 52е

    The error code 52e indicates invalid credentials. Check the list below as reference regarding all error codes.

    525​ user not found ​
    52e​ invalid credentials ​
    530​ not permitted to logon at this time​
    531​ not permitted to logon at this workstation​
    532​ password expired ​
    533​ account disabled ​
    701​ account expired ​
    773​ user must reset password ​
    775​

    user account locked





    14 января 2019 г. 9:14
  • "invalid credentials" точно об этом гласит

    The opinion expressed by me is not an official position of Microsoft

    и еще по ошибке 52e говорится, что:

    Что касается ошибки 52e, как ни странно, наше приложение будет принимать полное имя в виде CN = <имя пользователя> вместо действительного имени пользователя. Например, если у вас есть пользователь с полным именем Боб Смит (извините, если это читает настоящий Боб Смит), а его логин - bsmith - вы обычно ставите что-то вроде: cn = bsmith, ou = it, ou = dallas, dc = domain, dc = com, но у нас каждый раз не получается. Изменив это на cn = Bob Smith, ou = it, ou = dallas, dc = domain, dc = com, оно прошло !! Надеюсь, это поможет, хотя это и немного противоречиво.

    и еще по этой ошибке 52e говорится, что У учетной записи, используемой для привязки LDAP, были ограничения для рабочих станций входа в систему, указанные в Active Directory.

    14 января 2019 г. 9:30
  • Установить пакеты на Ubuntu:
    wmi - https://askubuntu.com/questions/885407/installing-wmic-on-ubuntu-16-04-lts
    ldap-utils - https://askubuntu.com/questions/869618/how-to-install-ldapsearch-on-16-04

    Скрипт получает из AD все пк с operatingsystem=Windows 10* и получает c них текущего пользователя.

    # Пользователь которого ищем
    param(
    	$UFind
    )
    
    # Получаем все компьютеры с Windows 10 c DC:
    	# DN пользователя от которого подключаемся
    	$user = 'cn=Administrator,cn=users,dc=contoso,dc=com'
    	# Пароль пользователя
    	$pass = 'P@$$w0rd1'
    	# IP/Name Domain Controller
    	$server = '192.168.0.100'
    	# Корень домена
    	$domain = 'dc=contoso,dc=com'
    	# Фильтр по OS
    	$filter = '(operatingsystem=Windows 10*)'
    	# Список компьютеров из AD
    	$pc = ldapsearch -x -h $server -D $user -w $pass -b $domain -s sub $filter dnshostname | where {$_ -match '^dnshostname'} | foreach {$_.split(":")[1].trim()}
    
    # Опрашиваем компьютеры с Windows 10
    	# Domain/UserName%Password для административной записи
    	$cred = 'Contoso/Administrator%P@$$w0rd1'
    	# Получаем данные
    	$r = $pc | foreach {
    		
    		$u = wmic -U $cred //$_ "select UserName from Win32_ComputerSystem" | where {$_ -match "\\"} | foreach {$_.split("|")[1]}
    		if($u) {
    			[PSCustomObject]@{
    				UserName = $u
    				DNS = $_
    				IP = [System.Net.Dns]::GetHostByName($_).AddressList[0].IPAddressToString
    			}
    		}
    	}
    	
    	# Фильтруем
    	$r | Where {$_.UserName -match $UFind}

    Пример Вывода:

    UserName     DNS                  IP
    --------     ---                  --
    CONTOSO\alex SRV-DC01.contoso.com 192.168.0.100


    кстати, где зеленым цветом помечено, где я ввожу свои данные, там нужно кавычки (') убирать?
    14 января 2019 г. 9:36
  • Не нужно. лучше сразу покажите свой готовый вариант.
    14 января 2019 г. 9:43
  • кавычки убирать не нужно.

    проверяйте dn name, скорее всего или пишите в неправильном формате или допускаете ошибку


    The opinion expressed by me is not an official position of Microsoft

    14 января 2019 г. 9:44
    Модератор
  • Не нужно. лучше сразу покажите свой готовый вариант.

    я вот так прописал в скрипте:

    # Пользователь которого ищем
    param(
        $UFind
    )

    # Получаем все компьютеры с Windows 10 c DC:
        # DN пользователя от которого подключаемся
        $user = 'cn=sats\a.lutov,cn=users,dc=sats,dc=local'
        # Пароль пользователя
        $pass = 'SecUrePass"
        # IP/Name Domain Controller
        $server = '192.168.164.54'
        # Корень домена
        $domain = 'ou=Отдел поддержки пользователей,ou=Омская,ou=Компьютеры,dc=sats,dc=local'
        # Фильтр по OS
        $filter = '(operatingsystem=Windows 10*)'
        # Список компьютеров из AD
        $pc = ldapsearch -x -h $server -D $user -w $pass -b $domain -s sub $filter dnshostname | where {$_ -match '^dnshostname'} | foreach {$_.split(":")[1].trim()}

    # Опрашиваем компьютеры с Windows 10
        # Domain/UserName%Password для административной записи
        $cred = 'sats/a.lutov%Lexus842'
        # Получаем данные
        $r = $pc | foreach {
            
            $u = wmic -U $cred //$_ "select UserName from Win32_ComputerSystem" | where {$_ -match "\\"} | foreach {$_.split("|")[1]}
            if($u) {
                [PSCustomObject]@{
                    UserName = $u
                    DNS = $_
                    IP = [System.Net.Dns]::GetHostByName($_).AddressList[0].IPAddressToString
                }
            }
        }
        
        # Фильтруем
        $r | Where {$_.UserName -match $UFind}


    • Изменено Vector BCOModerator 14 января 2019 г. 10:11 заменил пароль
    14 января 2019 г. 10:01
  •  

     $user = 'cn=sats\a.lutov,cn=users,dc=sats,dc=local'

    как и предполагалось в $user неправильная форма записи

    выполните на кд запрос (get-aduser a.lutov).DistinguishedName и то что получите вставьте в свой скрипт


    The opinion expressed by me is not an official position of Microsoft

    14 января 2019 г. 10:16
    Модератор
  •  

     $user = 'cn=sats\a.lutov,cn=users,dc=sats,dc=local'

    как и предполагалось в $user неправильная форма записи

    выполните на кд запрос (get-aduser a.lutov).DistinguishedName и то что получите вставьте в свой скрипт


    The opinion expressed by me is not an official position of Microsoft


    сделал как вы сказали, но ошибка все равно та же, а в этой строке как нужно прописать - $cred = 'sats/a.lutov%Lexus842' так или не правильно?

    14 января 2019 г. 10:27
  •  

     $user = 'cn=sats\a.lutov,cn=users,dc=sats,dc=local'

    как и предполагалось в $user неправильная форма записи

    выполните на кд запрос (get-aduser a.lutov).DistinguishedName и то что получите вставьте в свой скрипт


    The opinion expressed by me is not an official position of Microsoft


    сделал как вы сказали, но ошибка все равно та же, а в этой строке как нужно прописать - $cred = 'sats/a.lutov%SeCurePass' так или не правильно?

    вы же не пишите настоящие логин пароли на форуме, правда?

    думаю что $cred у вас указан правильно


    The opinion expressed by me is not an official position of Microsoft

    14 января 2019 г. 10:42
    Модератор
  •  

     $user = 'cn=sats\a.lutov,cn=users,dc=sats,dc=local'

    как и предполагалось в $user неправильная форма записи

    выполните на кд запрос (get-aduser a.lutov).DistinguishedName и то что получите вставьте в свой скрипт


    The opinion expressed by me is not an official position of Microsoft

    в DistinguishedName : CN=Иванов Иван Иванович,OU=Отдел поддержки пользователей,OU=Омская,OU=Пользователи,DC=sats,DC=local , вот эту строку я добавляю в скрипт в строке - $user = 'CN=Иванов Иван Иванович,OU=Отдел поддержки пользователей,OU=Омская,OU=Пользователи,DC=sats,DC=local' так же правильно?
    но ошибка все равно та же остается, в чем может быть проблема?
    а в строке, где - $cred = 'sats/i.ivanov%SeCurePass' может нужно прописать 'sats\Иванов Иван Иванович%SeCurePass' или это не правильно?
    14 января 2019 г. 10:56
  • я думаю что $creds записаны правильно

    по поводу $user проблема может быть в кирилице (кодеровке онной).

    проверить это можно создав пользюка у поторого dn не будет содержать кирилицы


    The opinion expressed by me is not an official position of Microsoft

    14 января 2019 г. 11:19
    Модератор
  • Вместо $user DN можно указать UPN: (Get-ADUser i.ivanov).UserPrincipalName и подставить в $user.

     $user = 'i.ivanov@sats.local'

    14 января 2019 г. 11:32
    Отвечающий
  • Вместо $user DN можно указать UPN: (Get-ADUser i.ivanov).UserPrincipalName и подставить в $user.

     $user = 'i.ivanov@sats.local'

    скрипт работает с DistinguishedName : CN=Иванов Иван Иванович,OU=Отдел поддержки пользователей,OU=Омская,OU=Пользователи,DC=sats,DC=local , проблема была с кодировкой с блокнота виндовским на блокнот линуксовый, он русские буквы в иероглифы переводил, а вопрос следующий, а почему этот скрипт мне вытягивает всех пользователей из AD, которые залогинены в системе, а мне нужно конкретно одного определенного пользователя, что нужно в скрипте изменить?

    14 января 2019 г. 12:23
  • пролистайте, выше Kazun приводил пример использования скрипта

    The opinion expressed by me is not an official position of Microsoft

    14 января 2019 г. 12:29
    Модератор
  • пролистайте, выше Kazun приводил пример использования скрипта

    The opinion expressed by me is not an official position of Microsoft

    покажите пожалуйста, где именно в этом скрипте делается запрос по определенному одному пользователю?
    14 января 2019 г. 12:33

  • Пример запуска:

    .\findu.ps1 alex

    ищем пользователя alex

    a в скрипте это последняя строка


    The opinion expressed by me is not an official position of Microsoft



    14 января 2019 г. 12:35
    Модератор

  • Пример запуска:

    .\findu.ps1 alex

    ищем пользователя alex

    a в скрипте это последняя строка


    The opinion expressed by me is not an official position of Microsoft



    спасибо большое все работает))) еще раз всем БОЛЬШОЕ СПАСИБО за помощь!!!ОГРОМНОЕ СПАСИБО особенно админам Vector BCO и Kazun!!!Вы просто настоящие КОМПЬЮТЕРНЫЕ ГЕНИИ!!!
    14 января 2019 г. 13:40
  • Установить пакеты на Ubuntu:
    wmi - https://askubuntu.com/questions/885407/installing-wmic-on-ubuntu-16-04-lts
    ldap-utils - https://askubuntu.com/questions/869618/how-to-install-ldapsearch-on-16-04

    Скрипт получает из AD все пк с operatingsystem=Windows 10* и получает c них текущего пользователя.

    # Пользователь которого ищем
    param(
    	$UFind
    )
    
    # Получаем все компьютеры с Windows 10 c DC:
    	# DN пользователя от которого подключаемся
    	$user = 'cn=Administrator,cn=users,dc=contoso,dc=com'
    	# Пароль пользователя
    	$pass = 'P@$$w0rd1'
    	# IP/Name Domain Controller
    	$server = '192.168.0.100'
    	# Корень домена
    	$domain = 'dc=contoso,dc=com'
    	# Фильтр по OS
    	$filter = '(operatingsystem=Windows 10*)'
    	# Список компьютеров из AD
    	$pc = ldapsearch -x -h $server -D $user -w $pass -b $domain -s sub $filter dnshostname | where {$_ -match '^dnshostname'} | foreach {$_.split(":")[1].trim()}
    
    # Опрашиваем компьютеры с Windows 10
    	# Domain/UserName%Password для административной записи
    	$cred = 'Contoso/Administrator%P@$$w0rd1'
    	# Получаем данные
    	$r = $pc | foreach {
    		
    		$u = wmic -U $cred //$_ "select UserName from Win32_ComputerSystem" | where {$_ -match "\\"} | foreach {$_.split("|")[1]}
    		if($u) {
    			[PSCustomObject]@{
    				UserName = $u
    				DNS = $_
    				IP = [System.Net.Dns]::GetHostByName($_).AddressList[0].IPAddressToString
    			}
    		}
    	}
    	
    	# Фильтруем
    	$r | Where {$_.UserName -match $UFind}

    Пример Вывода:

    UserName     DNS                  IP
    --------     ---                  --
    CONTOSO\alex SRV-DC01.contoso.com 192.168.0.100


    Уважаемые админы и форумчане!!! а этот скрипт будет работать в powershell на MACOS?там тоже нужно устанавливать дополнительные пакеты или утилиты, чтобы этот скрипт работал?
    18 января 2019 г. 9:36
  • предположу что может при условии что вы установите теже самые модули

    The opinion expressed by me is not an official position of Microsoft

    18 января 2019 г. 10:13
    Модератор
  • предположу что может при условии что вы установите теже самые модули

    The opinion expressed by me is not an official position of Microsoft


    а какие именно? и есть ли они вообще под MAC OS?
    18 января 2019 г. 11:52
  • предположу что может при условии что вы установите теже самые модули


    The opinion expressed by me is not an official position of Microsoft


    а какие именно? и есть ли они вообще под MAC OS?

    google wmic on macos

    google ldapsearch on macos


    The opinion expressed by me is not an official position of Microsoft

    18 января 2019 г. 14:39
    Модератор
  • предположу что может при условии что вы установите теже самые модули


    The opinion expressed by me is not an official position of Microsoft


    а какие именно? и есть ли они вообще под MAC OS?

    google wmic on macos

    google ldapsearch on macos


    The opinion expressed by me is not an official position of Microsoft


    подскажите пожалуйста, какие все таки нужны утилиты для mac os? wmic в гугле не находит для mac, может какой-нибудь аналог есть?
    18 января 2019 г. 15:47
  • у меня нет мака, а гугл такой же как у вас

    The opinion expressed by me is not an official position of Microsoft

    18 января 2019 г. 15:50
    Модератор
  • при запуске скрипта в powershell на Macos выдается следующее:

    ldap_bind: Invalid credentials (49)
        additional info: 80090308: LdapErr: DSID-0C0903C8, comment: AcceptSecurityContext error, data 52e, v23f0

    вот так выглядит скрипт через блокнот в Macos

    # ѕользователь которого ищем
    param(
        $UFind
    )

    # ѕолучаем все компьютеры с Windows 10 c DC:
        # DN пользовател€ от которого подключаемс€
        $user = 'CN=Иванов Иван Иванович,OU=Отдел поддержки пользователей,OU=Омская,OU=Пользователи,DC=sats,DC=local'
        # ѕароль пользовател€
        $pass = 'Lexus842'
        # IP/Name Domain Controller
        $server = '192.168.164.54'
        #  орень домена
        $domain = 'OU=Отдел поддержки пользователей,OU=Омская,OU=Компьютеры,DC=sats,DC=local'
        # ‘ильтр по OS
        $filter = '(operatingsystem=Windows 10*)'
        # —писок компьютеров из AD
        $pc = ldapsearch -x -h $server -D $user -w $pass -b $domain -s sub $filter dnshostname | where {$_ -match '^dnshostname'} | foreach {$_.split(":")[1].trim()}

    # ќпрашиваем компьютеры с Windows 10
        # Domain/UserName%Password дл€ административной записи
        $cred = 'sats/i.ivanov%Lexus842'
        # ѕолучаем данные
        $r = $pc | foreach {
            
            $u = wmic -U $cred //$_ "select UserName from Win32_ComputerSystem" | where {$_ -match "\\"} | foreach {$_.split("|")[1]}
            if($u) {
                [PSCustomObject]@{
                    UserName = $u
                    DNS = $_
                    IP = [System.Net.Dns]::GetHostByName($_).AddressList[0].IPAddressToString
                }
            }
        }
        
        # ‘ильтруем
        $r | Where {$_.UserName -match $UFind}

    подскажите пожалуйста, из-за чего может быть эта ошибка в скрипте, что нужно исправить в скрипте, чтобы он работал?





    18 января 2019 г. 16:10
  • при запуске скрипта в powershell на Macos выдается следующее:

    ldap_bind: Invalid credentials (49)
        additional info: 80090308: LdapErr: DSID-0C0903C8, comment: AcceptSecurityContext error, data 52e, v23f0

    вот так выглядит скрипт через блокнот в Macos

    14 января у вас уже была эта ошибка и она обсуждалась в этом треде

    Решением было - смена кодировки, так же Казун предлагал альтернативное решение


    The opinion expressed by me is not an official position of Microsoft

    18 января 2019 г. 17:32
    Модератор
  • при запуске скрипта в powershell на Macos выдается следующее:

    ldap_bind: Invalid credentials (49)
        additional info: 80090308: LdapErr: DSID-0C0903C8, comment: AcceptSecurityContext error, data 52e, v23f0

    вот так выглядит скрипт через блокнот в Macos

    14 января у вас уже была эта ошибка и она обсуждалась в этом треде

    Решением было - смена кодировки, так же Казун предлагал альтернативное решение


    The opinion expressed by me is not an official position of Microsoft

    я отредактировал на Macos в текстовом редакторе, но ошибка почему то осталась, поменял кодировку на Кириллица (Windows) , но ошибка все равно остается, подскажите пожалуйста, в чем может быть проблема?

    18 января 2019 г. 17:52
  • посмотрите какая у вас была на линуксе (та которая работала) и попробуйте ее. увы не знаю подроностей такого характера - обычно такие проблемы решаются практическим путем (не работает первый вариант, значит пробуем 2 и так далее пока не заработает или пока не надоест)

    можете так же добавить на следующую строку после пароля write-host "User : '$user'`r`nPass : '$pass'"

    и проверить что перед ошибкой вы видите правильные логин и пароль.


    The opinion expressed by me is not an official position of Microsoft

    18 января 2019 г. 18:01
    Модератор
  • взятый файл,который был сохранен на линуксе, при выполнении этого файла выдается следующее в powershelle:

    wmic : The term 'wmic' is not recognized as the name of a cmdlet, function, script file, or operable program.
    Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
    At /Users/a.lutov/Documents/ubuntuskript1.ps1:26 char:8
    +         $u = wmic -U $cred //$_ "select UserName from Win32_ComputerS ...
    +              ~~~~
    + CategoryInfo          : ObjectNotFound: (wmic:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

    подскажите пожалуйста, из-за чего теперь эта ошибка появляется?


    18 января 2019 г. 18:51
  • у меня нет мака, а гугл такой же как у вас

    The opinion expressed by me is not an official position of Microsoft

    у меня мак вообще стоит на виртуальной машине, виртуалка на windows 10
    18 января 2019 г. 19:52
  • взятый файл,который был сохранен на линуксе, при выполнении этого файла выдается следующее в powershelle:

    wmic : The term 'wmic' is not recognized as the name of a cmdlet, function, script file, or operable program.
    Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
    At /Users/a.lutov/Documents/ubuntuskript1.ps1:26 char:8
    +         $u = wmic -U $cred //$_ "select UserName from Win32_ComputerS ...
    +              ~~~~
    + CategoryInfo          : ObjectNotFound: (wmic:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

    подскажите пожалуйста, из-за чего теперь эта ошибка появляется?


    значит что wmic у вас не установлен, зато ldapsearch не ругнулся что хорошо.

    The opinion expressed by me is not an official position of Microsoft

    18 января 2019 г. 20:37
    Модератор
  • у меня нет мака, а гугл такой же как у вас


    The opinion expressed by me is not an official position of Microsoft

    у меня мак вообще стоит на виртуальной машине, виртуалка на windows 10

    понятное дело что можно создать среду (хоть это и не легально из того что я нагуглил при условии что ваша 10 не стоит на яблочном железе), попробовать и сделать солюшн. 

    Вот только это ваша задача а не моя, под мои задачи у меня есть лабы и я трачу часы, а не редко и дни в поисках хорошего решения в конкретной ситуации.

    Из того что вы написали хорошим решением было бы использовать проприетарные механизмы ос и не мозолить себе голову вопроса "а на какой еще ос, на портированном поше можно решить эту задачу?", при условии конечно что вы не планируете выпустить трактат "как найти пользователя в сети с любого устройства включая калькулятор".


    The opinion expressed by me is not an official position of Microsoft

    18 января 2019 г. 20:48
    Модератор
  • а где можно скачать и как установить wmic на Mac OS? может есть какой-нибудь аналог wmicа?
    18 января 2019 г. 23:14
  • у меня нет мака, а гугл такой же как у вас


    The opinion expressed by me is not an official position of Microsoft

    у меня мак вообще стоит на виртуальной машине, виртуалка на windows 10

    понятное дело что можно создать среду (хоть это и не легально из того что я нагуглил при условии что ваша 10 не стоит на яблочном железе), попробовать и сделать солюшн. 

    Вот только это ваша задача а не моя, под мои задачи у меня есть лабы и я трачу часы, а не редко и дни в поисках хорошего решения в конкретной ситуации.

    Из того что вы написали хорошим решением было бы использовать проприетарные механизмы ос и не мозолить себе голову вопроса "а на какой еще ос, на портированном поше можно решить эту задачу?", при условии конечно что вы не планируете выпустить трактат "как найти пользователя в сети с любого устройства включая калькулятор".


    The opinion expressed by me is not an official position of Microsoft


    Проприетарные механизмы ос, вы про что имеете ввиду? скрипт все равно должен работать а powershellе на Mac OS?
    18 января 2019 г. 23:38

  • Проприетарные механизмы ос, вы про что имеете ввиду? скрипт все равно должен работать а powershellе на Mac OS?

    wmi является примером проприетарного механизма.

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

    оптимально было бы поставить онную и почитать справку в самой комманде


    The opinion expressed by me is not an official position of Microsoft

    19 января 2019 г. 5:19
    Модератор
  • значит wmi-клиента нет под Mac OS? а openwbem - у него есть технология wmi? а в скрипте придется слово wmic изменить на open whem?

    19 января 2019 г. 9:48
  • значит wmi-клиента нет под Mac OS? а openwbem - у него есть технология wmi? а в скрипте придется слово wmic изменить на open whem?

    насколько я вычитал wbem позволяет читать параметры в том числе и wmi, но вам нужно будет заменить не одно слово wmic а всю команду

    The opinion expressed by me is not an official position of Microsoft

    19 января 2019 г. 10:01
    Модератор
  • подскажите пожалуйста, как будет выглядеть эта команда в скрипте со словом openwbem или wbem?
    19 января 2019 г. 10:07
  • я выше писал что не нашел справку по данным командам, поэтому увы не подскажу. нужно читать справку уснановленной утилиты

    The opinion expressed by me is not an official position of Microsoft


    19 января 2019 г. 10:22
    Модератор
  • а может быть другой способ выполнения скриптов на Mac OS, через powershell remoting с ssh или через applescript?

    19 января 2019 г. 11:13
  • не исключено, попробуйте - узнаете. выше казун описывал вариант через invoke-command.

    напомните , зачем вы этим занимаетесь?


    The opinion expressed by me is not an official position of Microsoft

    19 января 2019 г. 11:43
    Модератор
  • не исключено, попробуйте - узнаете. выше казун описывал вариант через invoke-command.

    напомните , зачем вы этим занимаетесь?


    The opinion expressed by me is not an official position of Microsoft


    для того, чтобы удаленно подключаться к компьютерам,потому что большинство пользователей - не знают какой у них ip-ашдрес или имя компьютера, а этим скриптом вытягиваем инфу из AD о компах, может есть другие способы вытаскивать инфу из AD на Mac OS?



    19 января 2019 г. 12:43
  • не исключено, попробуйте - узнаете. выше казун описывал вариант через invoke-command.

    напомните , зачем вы этим занимаетесь?


    The opinion expressed by me is not an official position of Microsoft


    для того, чтобы удаленно подключаться к компьютерам,потому что большинство пользователей - не знают какой у них ip-ашдрес или имя компьютера, а этим скриптом вытягиваем инфу из AD о компах, может есть другие способы вытаскивать инфу из AD на Mac OS?

    именно для этого вы решаете одну и туже задачу 3 раза?

    или ваш админский комп каждый раз грузиться с рандомной ос?

    инфу вы можете вытаскивать из пользователей настроив bginfo в групповой политике, причем в настройках bginfo можете выставить 50 шрифт, что бы 70-80 летние бабушки могли без труда прочитать какой у них ip адрес

    для вытягивания инфы из ад вы используете не wmic а ldap и он у вас работает

    ответьте пожалуйста зачем вы решаете одну и туже (2 раза решенную) задачу 3й раз? это вечная тема а вы троль? 80 сообщений в треде...


    The opinion expressed by me is not an official position of Microsoft

    19 января 2019 г. 12:53
    Модератор
  • не исключено, попробуйте - узнаете. выше казун описывал вариант через invoke-command.

    напомните , зачем вы этим занимаетесь?


    The opinion expressed by me is not an official position of Microsoft


    для того, чтобы удаленно подключаться к компьютерам,потому что большинство пользователей - не знают какой у них ip-ашдрес или имя компьютера, а этим скриптом вытягиваем инфу из AD о компах, может есть другие способы вытаскивать инфу из AD на Mac OS?

    именно для этого вы решаете одну и туже задачу 3 раза?

    или ваш админский комп каждый раз грузиться с рандомной ос?

    инфу вы можете вытаскивать из пользователей настроив bginfo в групповой политике, причем в настройках bginfo можете выставить 50 шрифт, что бы 70-80 летние бабушки могли без труда прочитать какой у них ip адрес

    для вытягивания инфы из ад вы используете не wmic а ldap и он у вас работает

    ответьте пожалуйста зачем вы решаете одну и туже (2 раза решенную) задачу 3й раз? это вечная тема а вы троль? 80 сообщений в треде...


    The opinion expressed by me is not an official position of Microsoft


    почему сразу тролль, у нас компы, именно у тех поддержки стали на Mac OS, вот поэтому и требуется выполнения скриптов и запросов, а тот скрипт, который работает на винде и на линуксе, как пример, вот этот скрипт, но скриптов и разных запросов их много, вот и прошу вас помочь решить этот данный вопрос


    19 января 2019 г. 13:12
  • а wmic нельзя установить  через wine? если установим пакет openwbem на os x, то как будет выглядеть команда в скрипте? подскажите пожалуйста разобраться с этим пакетом openwbem, чтобы этот скрипт работал и тогда тема закроется раз и навсегда
    19 января 2019 г. 23:00
  • накопал вот чего:  Apple Inc. uses an implementation of WBEM in its Apple Remote Desktop management tool, and Mac OS X clients ship with support for Remote Management.  

    Может там уже готовое чего есть?

    OpenWbem  же не развивается с 2006 г.  Лучше бы поискать что-нибудь более современное.

    20 января 2019 г. 2:42
  • накопал вот чего:  Apple Inc. uses an implementation of WBEM in its Apple Remote Desktop management tool, and Mac OS X clients ship with support for Remote Management.  

    Может там уже готовое чего есть?

    OpenWbem  же не развивается с 2006 г.  Лучше бы поискать что-нибудь более современное.

    так вопрос не в том что бы поискать, почитать документацию, 10-15 раз попробовать и сделать. вопрос в том что бы получить готовое решение, как уже было сделано дважды для примера, и вот вдруг оказалось что эти 2 примера (на win и linux) не решают задачи так как техподы сидят на маках.

    The opinion expressed by me is not an official position of Microsoft

    20 января 2019 г. 7:27
    Модератор
  • так в итоге через openwbem уже не актуален? А как можно тогда выполнить скрипт через Apple remote desktop management tool? Apple remote desktop больше всего похож на rdp на винде


    20 января 2019 г. 8:45
  • юбилейный 89 ответ:

    https://www.maketecheasier.com/install-linux-software-on-mac/amp/

    а вы пробовали его использовать openwbem, или другие реализации wbem? как результаты?


    The opinion expressed by me is not an official position of Microsoft

    20 января 2019 г. 9:27
    Модератор
  • юбилейный 89 ответ:

    https://www.maketecheasier.com/install-linux-software-on-mac/amp/

    а вы пробовали его использовать openwbem, или другие реализации wbem? как результаты?


    The opinion expressed by me is not an official position of Microsoft


    пока еще нет, после того как я установлю openwbem, дальше что нужно сделать? как мне через openwbem выполнить скрипт и как вообще должен выглядеть командлет?

    20 января 2019 г. 10:09
  • openwbem установили, как дальше быть? как выполнить теперь скрипт? получилось установить wmi-1.3.16 , но ошибка остается прежней:

    wmic : The term 'wmic' is not recognized as the name of a cmdlet, function, script file, or operable program.
    Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
    At /Users/a.lutov/Documents/ubuntuskript1.ps1:26 char:8
    +         $u = wmic -U $cred //$_ "select UserName from Win32_ComputerS ...
    +              ~~~~
    + CategoryInfo          : ObjectNotFound: (wmic:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

    21 января 2019 г. 17:49
  • MAC-HIGH-SIERRA:openwbem-3.2.2 user$ wbem -U 'sats/a.lutov%Lexus842' //192.168.165.183 "select UserName from Win32_ComputerSystem"

    -bash: MAC-HIGH-SIERRA:openwbem-3.2.2: command not found

    подскажите пожалуйста, как нужно правильно ввести команду?


    21 января 2019 г. 18:13
  • openwbem установили, как дальше быть? как выполнить теперь скрипт? получилось установить wmi-1.3.16 , но ошибка остается прежней:

    wmic : The term 'wmic' is not recognized as the name of a cmdlet, function, script file, or operable program.
    Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
    At /Users/a.lutov/Documents/ubuntuskript1.ps1:26 char:8
    +         $u = wmic -U $cred //$_ "select UserName from Win32_ComputerS ...
    +              ~~~~
    + CategoryInfo          : ObjectNotFound: (wmic:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

    скорее всего wmic не добавлен в переменную окружения $path (не доконфигурирован). можно попробовать найти где установлена эта тулза выполнить команду wmic -h и посмотреть что получится.

    аналогичная рекомендация и по wbem. только в отношении последнего команда выглядит крайне странно (похоже что вы что-то лишнее накопировали).


    The opinion expressed by me is not an official position of Microsoft

    21 января 2019 г. 20:19
    Модератор
  • bash говорит, что команда не опознана.  Нужно ввести полный путь до исполняемого файла.
    21 января 2019 г. 21:34
  • а как правильно сконфигурировать wmic и wbem? есть где-нибудь более подробная инструкция по настройке?
    21 января 2019 г. 22:22
  • bash говорит, что команда не опознана.  Нужно ввести полный путь до исполняемого файла.

    как должна тогда выглядеть команда?как ввести полный путь до исполняемого файла?
    21 января 2019 г. 22:26
  • делаю по инструкции - https://askubuntu.com/questions/885407/installing-wmic-on-ubuntu-16-04-lts

    при вводе команды в терминале -

    apt install autoconf gcc libdatetime-perl make build-essential g++ python-dev

    выводится следующее: Unable to locate an executable at "/Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home/bin/apt" (-1)
    как это можно исправить? а если Джаву удалить и ввести в терминал -

    apt install autoconf gcc libdatetime-perl make build-essential g++ python-dev то выдается следующее:

    No Java runtime present, requesting install.

    22 января 2019 г. 8:58
  • я выше давал линк на то как использовать macports

    The opinion expressed by me is not an official position of Microsoft

    22 января 2019 г. 9:19
    Модератор
  • я выше давал линк на то как использовать macports

    The opinion expressed by me is not an official position of Microsoft

    я все сделал по этой инструкции, ссылку которую вы давали - https://www.maketecheasier.com/install-linux-software-on-mac/amp/ , но при вводе в терминал выражения apt, все равно требует установку джавы

    22 января 2019 г. 9:29
  • APT  это специфично для убунтоводов. Возможно, что он не поддерживается. Как мне кажется, это вообще не тот путь.

    Открываете Мак, смотрите, какая версия SAMBА-сервера там установлена. Вохможно, что 4-я присутствует, но выключена по умолчанию, а работает 3-я. Тогда надо просто включить.  В 4-й версии реализована полная поддержка AD. Может работать даже в качестве контроллера. WMI-как часть SAMBA4 уже дожен присутствовать.

    Если SAMBA4 не установлен, качаете отсюда тарболл и устанавливаете:

    https://download.samba.org/pub/samba/stable/samba-4.9.4.tar.gz 

    23 января 2019 г. 0:05
  • наконец то я разобрался, скрипт работает, получилось реализовать wmic на mac os, админ Vector BCO правильно говорил, что нужно было правильно сконфигурировать wmic, для этого пришлось скачать пакет Fink, он преобразует запуск команд через apt-get под Debian и после установки wmicа и правильной конфигурации скрипт работает. СПАСИБО БОЛЬШОЕ всем, кто помогал мне и отвечал на вопросы, тема полностью закрывается!!!

    24 января 2019 г. 18:00
  • наконец то я разобрался, скрипт работает, получилось реализовать wmic на mac os, админ Vector BCO правильно говорил, что нужно было правильно сконфигурировать wmic, для этого пришлось скачать пакет Fink, он преобразует запуск команд через apt-get под Debian и после установки wmicа и правильной конфигурации скрипт работает. СПАСИБО БОЛЬШОЕ всем, кто помогал мне и отвечал на вопросы, тема полностью закрывается!!!

    Круто, Вы полностью разобрались в вопросе, с чем вас и поздравляю :)


    The opinion expressed by me is not an official position of Microsoft

    24 января 2019 г. 18:02
    Модератор