Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Windows PowerShell 1.x/2.x/CTP

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Открыть новую тему     Написать ответ в эту тему

tcg2



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Microsoft Windows PowerShell

 
Обсуждаемые темы

    * Работа с SQL
    * Работа с Visual Studio
    * etc.

 
Помощь по использованию консоли pwsh, а также встроенной в Windows консоли powershell.exe  

Всего записей: 7 | Зарегистр. 20-11-2006 | Отправлено: 19:06 29-11-2006 | Исправлено: YuS 2, 18:04 02-06-2020
Metall Doktor



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Там всего около 400 пользователей.
повторяющихся имени и фамилии нету. А вот фамилии у некоторых одинаковые.
У нас ФИО прописан в CN , DisplayName и в Name. И по отдельности есть в GivenName и фамилия в Surname и В SN .
Если честно не вижу особо смысла в сопоставлении . Список в общем достаточно актуальный и там в лучшем случае будет процентов 5 блокированных пользователей - их один фиг потом в ручную проверять. К тому-же в системе из которой я выгружал ФИО не отражаются смены фамилии. Так что 100% точности в любом случае не будет.

Всего записей: 323 | Зарегистр. 22-09-2016 | Отправлено: 10:27 19-07-2018
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Metall Doktor
Объяснять ситуацию не было нужды ) Я ж написал, что решение неполное - и ответственность за его применение в конкретном месте остаётся за вами.
 
Ориентируйтесь на свои входные данные в файле - и спрашивайте у AD подходящим фильтром.
 
Адаптировать выдачу Import-Csv к параметру фильтра Get-AdUser (если вдруг между ними нету буквального соответствия) можно вставкой единственного командлета Select-Object с нужным -Property  
 

Всего записей: 17167 | Зарегистр. 14-10-2001 | Отправлено: 11:51 19-07-2018 | Исправлено: LevT, 11:55 19-07-2018
Metall Doktor



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Да понятно что неполное.
Попробую сейчас.
 
Добавлено:
Хм..
Толи я тупой. Толи ещё чего.
 
Import-Csv c:\ps\1.csv -Header 'CN'   - я так понимаю этой строчкой мы именуем наш файл и дальше в фильтре уже ссылаемся на него.
 
Get-AdUser : Переменная: "_" обнаружена в выражении: $_.CN не имеет определения.
строка:2 знак:9
+         Get-AdUser -Properties CN,Enabled -Filter {CN -eq $_.CN} |
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: ( [Get-ADUser], ArgumentException
    + FullyQualifiedErrorId : Переменная: "_" обнаружена в выражении: $_.CN не имеет определения.,Microsoft.ActiveDirectory.Management.Commands.GetA  
   DUser
 
Но кажется система этого не приняла.

Всего записей: 323 | Зарегистр. 22-09-2016 | Отправлено: 14:45 19-07-2018
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Import-Csv c:\ps\1.csv -Header 'CN'   - я так понимаю этой строчкой мы именуем наш файл и дальше в фильтре уже ссылаемся на него.  

 
Этой строчкой должно импортироваться содержимое уже сущесвующего файла с подопытными ФИО (строчка под строчкой).
Если такого файла у вас нет - то в следующий раз формулируйте вопрос адекватней.


----------
Проект Либген v2 //
Обсуждение

Всего записей: 17167 | Зарегистр. 14-10-2001 | Отправлено: 15:23 19-07-2018 | Исправлено: LevT, 15:30 19-07-2018
Metall Doktor



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Файл есть.
Что делает Import-Csv я понимаю.
А вот , что к нему даёт ключ -Header 'CN' , я не понимаю.

Всего записей: 323 | Зарегистр. 22-09-2016 | Отправлено: 15:53 20-07-2018
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Metall Doktor
 
Эксперимент и ещё раз эксперимент )
Оставьте от файла несколько верхних строчек и примените к нему оба варианта командлета, с ключом и без ключа.
В первом ряду исходного файла могут быть имена/названия столбцов, а может и не быть ничего.
 
Ключом -Header вы даёте значимые для вас имена.  
Но вообще-то Powershell готов создать столько свойств, сколько столбцов увидит в файле - и назвать их порядковыми именами. Он не может догадаться о смысле данных в столбцах (и нужных дальше именно вам именах).
 
Если же вы не из тех, кто практикует learning by doing, то могу лишь посоветовать  почитать справку "help Import-Csv -online"  

Всего записей: 17167 | Зарегистр. 14-10-2001 | Отправлено: 18:46 20-07-2018 | Исправлено: LevT, 23:10 20-07-2018
Smitis



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Вопрос, кто-нибудь пытался обрабатывать через Invoke-WebRequest локальные файлы?
Почему-то Invoke-WebRequest "file:d:\test\1.htm" (html простейший тестовый, содержит head, body и один div) всегда возвращает Content-Type: application/octet-stream даже если явно указать -ContentType "text/html"

----------
Разум когда-нибудь победит

Всего записей: 3217 | Зарегистр. 09-02-2003 | Отправлено: 23:34 21-07-2018
GeraYN

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день, коллеги!
Появилась задача принимать на 5000 порт команды, обрабатывать и возвращать статус или значение.  
Поискав на просторах интернета, нашлось вот такое решение . Далее немного модифицировал, но результат не радует. Порт создается и к нему можно подключиться по телнет, но команду ввести невозможно. Буду рад любой подсказке, сам в тупике, второй день топчусь на месте.  
С PowerShell работаю недавно и еще плохо понимаю логику работы языка.
 

Код:
 
function Trace-Port([int]$port=5000, [string]$IPAdress="127.0.0.1", [switch]$Echo=$false){
    $listener = new-object System.Net.Sockets.TcpListener([System.Net.IPAddress]::Parse($IPAdress), $port)
    $listener.start()
    [byte[]]$bytes = 0..255|%{0}
     
#   write-host "Waiting for a connection on port $port..."
    $client = $listener.AcceptTcpClient()
#   write-host "Connected from $($client.Client.RemoteEndPoint)"
    $stream = $client.GetStream()
 
    ### Сообщение о программе и версии  
    $sendbytes = ([text.encoding]::ASCII).GetBytes("Remote Panel v1.0`r`n")
    $stream.Write($sendbytes,0,$sendbytes.Length)
    $stream.Flush()
 
    ### Приглашение ввести команду
    $sendbytes = ([text.encoding]::ASCII).GetBytes(":")
    $stream.Write($sendbytes,0,$sendbytes.Length)
    $stream.Flush()
 
 
    while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0)
    {
        #$bytes[0..($i-1)]|%{$_}
        if ($Echo){$stream.Write($bytes,0,$i)}
 
        $EncodedText = New-Object -TypeName System.Text.ASCIIEncoding
        $data = $EncodedText.GetString($bytes,0, $i)
        $sendback = ($data 2>&1 | Out-String )
        $sendback2  = $sendback + ':'
        $x = ($error[0] | Out-String)
        $error.clear()
        $sendback2 = $sendback2 + $x
 
        $sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2)
 
        ###  Действие на команду hello  
        if ($sendbyte -eq "hello") {
            Write-Host " wwww  test hello `r`n"
            $sendbytes = ([text.encoding]::ASCII).GetBytes("test hello`r`n")
            $stream.Write($sendbyte,0,$sendbyte.Length)
            $stream.Flush()
        }
 
    }
    $client.Close()
    $listener.Stop()
    write-host "Connection closed."
}
 
$ip=get-WmiObject Win32_NetworkAdapterConfiguration|Where {$_.Ipaddress.length -gt 1}  
$port = 5000
 
write-host(Get-NetIPAddress | ?{ $_.AddressFamily -eq “IPv4” -and !($_.IPAddress -match “169”) -and !($_.IPaddress -match “127”) }).IPAddress
write-host telnet $ip.ipaddress[0] $port
 
 
Trace-Port  -ip $ip.ipaddress[0]  -port $port
 

Всего записей: 4 | Зарегистр. 10-09-2017 | Отправлено: 19:29 27-12-2018
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GeraYN
 
Может помочь, если вы сами определеяете API
Если нет - то "сервер вообще" на повершеле достаточно извратная затея, и я не знаю...

Всего записей: 17167 | Зарегистр. 14-10-2001 | Отправлено: 10:36 28-12-2018
clio77



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
на основе файла списка(txt) DNS имен сайтов, вида:
-------------
dostavka.com
up-pro.ru
trudvsem.ru
-------------
 
необходимо получить файл с их IP адресами в той же очередности
 
-------------
128.140.175.206
90.156.201.115
185.99.9.50
---------------
 
Возможно ли это выполнить силами PS? Приму любую помощь в решении вопроса, в т.ч. через обсуждение в личке.
 

Всего записей: 2441 | Зарегистр. 27-10-2003 | Отправлено: 08:32 22-03-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
clio77

Цитата:
Возможно ли это выполнить силами PS?

Легко:

Код:
$file = 'list.txt'
$out = 'out.txt'
gc $file -enc utf8|%{
    try{
        ([net.dns]::gethostaddresses($($_.trim()))).ipaddresstostring -join '|'
        # либо так:
        # (resolve-dnsname $($_.trim()) -ea 1).ip4address -join '|'
    } catch {
        write-host Произошла ошибка: $_ -for red
        '---'
    }
}|out-file $out -enc utf8

Вопрос только в том, что одному доменному адресу, могут соответствовать несколько IP. Кроме того, не всегда возможно получить ответ от сервера и будет возникать ошибка...

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 09:56 22-03-2019 | Исправлено: YuS_2, 10:11 22-03-2019
clio77



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Вопрос только в том, что одному доменному адресу, могут соответствовать несколько IP

Вот это как раз и хорошо. Вы волшебник! Задача в формировании файла списка для фильтрации - разрешения/запрета по IP. Только не вижу как в Вашем скрипте формируется выходной файлик с IP. Ошибку, конечно, лучше игнорировать, чтобы не прерывала обработку последующих строк.
 

Всего записей: 2441 | Зарегистр. 27-10-2003 | Отправлено: 10:01 22-03-2019 | Исправлено: clio77, 10:07 22-03-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
clio77

Цитата:
не вижу как в Вашем скрипте формируется выходной файлик txt.

Этого там не было, но это вещь достаточно стандартная... добавил в скрипт ...

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 10:05 22-03-2019
clio77



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Большое человеческое спасибо. Сейчас включусь в тест.

Всего записей: 2441 | Зарегистр. 27-10-2003 | Отправлено: 10:22 22-03-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
clio77

Цитата:
Ошибку, конечно, лучше игнорировать, чтобы не прерывала обработку последующих строк.

Ошибки не прерывающие. Если не предусмотреть обработку, то просто соответствия не получится... но в скрипте это предусмотрено, если возникает ошибка, вместо IP в файл будет выведен текст "---"

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 10:42 22-03-2019
clio77



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как оказалось, обработчик фильтра читает построчно, и умеет понимать строку длинной только в 4 октета IP адреса, остальные символы после IP, он интерпретирует как часть фильтра, соответственно запись вида "95.173.136.70|95.173.136.72|95.173.136.71" - недопустима.
Возможно ли чтобы скрипт записывал ip одного dns построчно, вот так:
 
95.173.136.70
95.173.136.72
95.173.136.71
 
и не записывал в выходной файл неудачные попытки пинга "---" ? Иначе приходится вручную или с помощью глобальной корректировки удалять эти символы и затем пустые строки из выходного файла.

Всего записей: 2441 | Зарегистр. 27-10-2003 | Отправлено: 08:16 25-03-2019 | Исправлено: clio77, 08:19 25-03-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
clio77

Цитата:
соответственно запись вида "95.173.136.70|95.173.136.72|95.173.136.71" - недопустима.

Ну, тогда требуется уточнение для таких случаев:

Цитата:
Вопрос только в том, что одному доменному адресу, могут соответствовать несколько IP.

Что делать со всей этой кучей IP? Какой из них выбрать для записи?
 
 

Цитата:
Возможно ли чтобы скрипт записывал ip одного dns построчно, вот так


Цитата:
и не записывал в выходной файл неудачные попытки пинга "---" ?

Записать-то не проблема...
Вам надо определиться со всеми условиями задачи... т.е. описать задачу полностью, от начала и до конца.
Иначе не получится:

Цитата:
необходимо получить файл с их IP адресами в той же очередности

 
1. Если всю полученную кучу IP записывать построчно, то какому имени они будут соответствовать?
2. Если какой-либо адрес недоступен, то полученный IP следующего по списку доменного имени, будет соответствовать именно этому, недоступному, т.к. не будет в выводе ничего, что говорило бы об отсутствии IP для недоступного адреса.
 
В общем, не пытайтесь решать частности, опишите задачу целиком.

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 08:51 25-03-2019
clio77



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
del*  
--------------------
(* - поторопился)

Всего записей: 2441 | Зарегистр. 27-10-2003 | Отправлено: 09:23 25-03-2019 | Исправлено: clio77, 12:10 25-03-2019
clio77



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS_2

Цитата:
В общем, не пытайтесь решать частности, опишите задачу целиком.

1.ПО "Трафик Инспектор" позволяет фильтровать контент по URL и IP адресам сайта. В связи с тем, что сайты работающие по протоколу HTTPS используют 443 порт, нам необходимо создавать фильтр мимо прокси по "IP адресу + 443 порт".  Имея в наличии только доменные имена, создать вручную список  из одних IP - задача нетривиальная, поскольку домены могут иметь несколько IP адресов.
 
2.Обработчик фильтров работает с листом IP адресов расположенных построчно. Например:
 

Цитата:
128.140.175.206  
90.156.201.115  
185.99.9.50  
90.156.201.115
90.156.201.116    
185.99.9.50

 
3. По условиям задачи необходимо:

  • a)На основе имеющегося текстового файла с url адресами доменов, (например:
     

    Цитата:
    dostavka.com  
    up-pro.ru  
    trudvsem.ru  
    prdostavka.com  
    dup-pro.ru  
    strudvsem.ru
     

     
    ) получить текстовый файл со всеми IP адресами каждого домена, даже если их несколько.  
  • b)Записать адреса в соответствии с правилами обработчика фильтров. (каждый адрес в отдельной строке)
  • c)При формировании выходного файла не записывать ошибку получения IP адресов и какие-то еще символы отличные от стандартной записи IP адреса. Пример содержимого правильного выходного файла:
     

    Цитата:
    128.140.175.206  
    128.140.175.208    
    90.156.201.115
    90.156.201.116    
    185.99.9.50  
    228.150.175.231
    228.150.175.234
    185.99.9.55
    185.99.9.55  
    228.150.175.238

     
  • d)Последовательность записи IP адресов, относительно их записи в текстовом файле c url адресами, и непосредственно в самом выходном файле - не важна.
  • e)Сам выходной файл будет импортироваться непосредственно планировщиком ПО "Трафик Инспектор".

Всего записей: 2441 | Зарегистр. 27-10-2003 | Отправлено: 11:48 25-03-2019 | Исправлено: clio77, 12:49 25-03-2019
YuS_2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
clio77
Вот, теперь всё понятно...
Если правильно понял:  
1. Соответствие списка доменных адресов с записями в списке IP не требуется.  
2. Требуется только последовательная, построчная запись всех полученных IP без пропусков.
 
Тогда код будет таким:

Код:
$file = 'list.txt'
$out = 'out.txt'
gc $file -enc utf8|%{
    try{
          # Использовать для получения IP, либо эту строку:
        #([net.dns]::gethostaddresses($($_.trim()))).ipaddresstostring
          # либо такую:
        (resolve-dnsname $($_.trim()) -ea 1).ip4address
    } catch {
        write-host Произошла ошибка: $_ -for red
    }
}|out-file $out -enc utf8

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 21:50 25-03-2019 | Исправлено: YuS_2, 21:55 25-03-2019
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Windows PowerShell 1.x/2.x/CTP


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru