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?там тоже нужно устанавливать дополнительные пакеты или утилиты, чтобы этот скрипт работал?
    21 ч. 31 мин. назад
  • предположу что может при условии что вы установите теже самые модули

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

    20 ч. 54 мин. назад
    Модератор
  • предположу что может при условии что вы установите теже самые модули

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


    а какие именно? и есть ли они вообще под MAC OS?
    19 ч. 15 мин. назад
  • предположу что может при условии что вы установите теже самые модули


    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

    16 ч. 29 мин. назад
    Модератор
  • предположу что может при условии что вы установите теже самые модули


    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, может какой-нибудь аналог есть?
    15 ч. 20 мин. назад
  • у меня нет мака, а гугл такой же как у вас

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

    15 ч. 17 мин. назад
    Модератор
  • при запуске скрипта в 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}

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





    14 ч. 57 мин. назад
  • при запуске скрипта в 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

    13 ч. 35 мин. назад
    Модератор
  • при запуске скрипта в 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) , но ошибка все равно остается, подскажите пожалуйста, в чем может быть проблема?

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

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

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


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

    13 ч. 6 мин. назад
    Модератор
  • взятый файл,который был сохранен на линуксе, при выполнении этого файла выдается следующее в 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

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


    12 ч. 17 мин. назад
  • у меня нет мака, а гугл такой же как у вас

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

    у меня мак вообще стоит на виртуальной машине, виртуалка на windows 10
    11 ч. 15 мин. назад
  • взятый файл,который был сохранен на линуксе, при выполнении этого файла выдается следующее в 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

    10 ч. 30 мин. назад
    Модератор
  • у меня нет мака, а гугл такой же как у вас


    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

    10 ч. 19 мин. назад
    Модератор
  • а где можно скачать и как установить wmic на Mac OS? может есть какой-нибудь аналог wmicа?
    7 ч. 54 мин. назад
  • у меня нет мака, а гугл такой же как у вас


    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?
    7 ч. 29 мин. назад

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

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

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

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


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

    1 час 48 мин. назад
    Модератор