Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» PowerShell

Автор: HumpSoft
Дата сообщения: 24.03.2014 15:06
aftertime
$pic_url=[regex]::Matches((Select-String "http://www.luxorfilm.ru/upload/movies/" film.html), '(http://www.luxorfilm.ru/upload/movies/\d{1,}/\w{1,}.\w{1,})')-join""
Автор: aftertime
Дата сообщения: 24.03.2014 17:27
спасибо, все работает. уже помогли разобраться. вот рабочий скрипт

Код:
param($url,$folder = "C:\films")

Add-Type -AssemblyName system.drawing

# Создадим папку
$dir = [regex]::match($url,"/(\d{4})/").Groups[1].ToString()
$path = Join-Path $folder $dir
$savefile = Join-Path $path poster.png
$saveyou = Join-Path $path trailer.flv

if(!(Test-Path $path)) {
    md $path | out-null
}

# Получим ссылку на картинку
$iw = Invoke-WebRequest $url
$image = Invoke-WebRequest ($iw.Links | Where href -match "/$dir/.*\.jpg").href

# Сохраним картинку в png
$m = New-Object IO.MemoryStream(,([byte[]]$image.content))
$st = [drawing.image]::FromStream($m)
$st.Save($saveFile, "png")

# Получим ссылку на youtube
$you = $iw.ParsedHtml.getElementsByName("ctl00_contentPlaceHolder_youtubeTrailerDiv") |
    Where innerHTML -match "www.youtube.com/embed" | Foreach {if($_.innerHTML -match 'src="//(.+)" frameBorder') {$matches[1]}}

youtube-dl.exe -o $saveyou $you
Автор: HumpSoft
Дата сообщения: 26.03.2014 08:44

Цитата:
$image = Invoke-WebRequest ($iw.Links | Where href -match "/$dir/.*\.jpg").href


это если все картинки там в жипегах
Автор: aftertime
Дата сообщения: 27.03.2014 17:22
HumpSoft
нужна только одна и она - жпег
Автор: PREVED
Дата сообщения: 15.04.2014 16:38
Здравствуйте, знатоки PS.

Подскажите пожалуйста, нужен скрипт, который бы делал следующее:

1. Получить значение Handle для текущего АКТИВНОГО окна. Ну или, как вариант, получить в качестве параметра готовое значение Handle нужного окна из другой программы (в виде параметра командной строки) - у меня есть утилитка которая может считать handle окна и записать его в параметр.

2. Найти PID (Process ID) запущенного процесса, которому принадлежит ОКНО с этим Handle.

3. Вернуть значение PID - лучше всего записать его в виде ключа в реестр (на худой конец - в текстовый файл).

Весь смысл в том, чтобы найти PID процесса по hadle-у окна, которое принадлежит этому процессу.

Подскажите хотя бы в какую сторону копать. И вообще, возможно ли такое реализовать с помощью PS. Заранее спасибо.
Автор: Frank Fox
Дата сообщения: 01.05.2014 21:48
Доброго времени суток.

Есть много файлов. Каждый файл - множество абзацев, разделенных двумя пустыми строками (кроме первого абзаца, в начале файла пустых строк нет). Пустых строчек может быть и пять.

Нужно выбрать абзацы, в которые входит одно какое-то конкретное слово. Оно может быть в любом месте абзаца (в конце, в начале, в середине). И сложить эти абзацы в файлы размером где-то по мегабайту. Абзацы надо разделить пустой строкой.
Автор: Oldster
Дата сообщения: 02.05.2014 10:58
Frank Fox
Посмотри тут https://xaegr.wordpress.com/2009/12/28/regexp-7-select-string/
Сорри за краткость, пишу с тел.
Автор: ArieBarboi
Дата сообщения: 03.06.2014 09:01
Добрый день!

Подскажите пожалуйста почему этот скрипт сохраняет пустой файл:

PS C:\temp\pwshl> get-service |convertto-html| foreach {if ($_.status -eq "running") {write-host $_.name $_.status -backgroundcolor white -foregroundcolor black} else {write-host $_.name $_.status -backgroundcolor black -foregroundcolor white}} > 1.html

А этот нормально отрабатывает:

Get-Service | ConvertTo-Html -Property name,status | Foreach {
If ($_ -Like "*<td>Running</td>*") {$_ -Replace "<tr>", "<tr
bgcolor=green>"}
else {$_ -Replace "<tr>", "<tr bgcolor=red>"}} > .\get-service.html

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

Заранее спасибо
Автор: ArieBarboi
Дата сообщения: 04.06.2014 10:31
Получается в первом случае условие просто для текста, а во втором уже для конвертированной веб страницы? я прав?
Автор: ArieBarboi
Дата сообщения: 30.06.2014 07:01
Вопрос не заслуживает внимания?) отправили бы хоть куда то тогда меня повышать компетенцию....
Автор: Tilks
Дата сообщения: 30.06.2014 09:44
ArieBarboi

Цитата:
почему этот скрипт сохраняет пустой файл

а вы посмотрели, какой вывод после каждого конвейера?
Я так понимаю, что после |convertto-html уже нельзя получить $_.status от get-service, так как он, уже отдал всё на конвертацию в html.
Почувствуйте разницу.

Код: Get-Service | Get-Member -MemberType Property
ConvertTo-Html | Get-Member -MemberType Property
Автор: Xanth
Дата сообщения: 03.07.2014 22:39
Добрый день! Есть вопрос по PowerShell
Хочу сделать пару вещей.
На входе в скрипт имеем:
Файлик 1.txt в формате "IP HOSTNAME". Скрипт в цикле переберает IP из другого списка. Требуеться:
В файле "1.txt" найти соответствие IP адреса с проверяемым и закинуть в переменную Hostname из этого эе файла. Формат файла для примера

Код:
127.0.0.1,LocalHost
8.8.8.8,Google1
8.8.4.4,Google2
Автор: angeltwo
Дата сообщения: 04.07.2014 05:10
Xanth
Содержимое 1.txt поместить в массив. Это можно и через get-content сделать,затем разобрать в массив, а можно через import-csv. Далее, используя методы массива найти индекс нужного элемента. Зная индекс, в переменную Hostname поместить элемент массива
Автор: sundraw
Дата сообщения: 06.09.2014 08:00
Здравствуйте! Как с помощью Powershell можно реализовать аналог команды пакетного файла
@echo off
for /L %%i in (1,1,10) do (
commands....
)
Нужно для создания и запуска виртуальных машин в Hyper-V.
Автор: angeltwo
Дата сообщения: 06.09.2014 21:06
sundraw
Ну, например, так

Код: $i = 1
while ($i -le 11)
do
{
command
$i++
}
Автор: sundraw
Дата сообщения: 06.09.2014 21:58
angeltwo, спасибо!
Только сегодня начал осваивать PS. Получилось вот что после запуска, начинал с 3-й машины


Код: PS C:\Windows\system32> $i = 3
while ($i‹11)
do
{
New-VM -Name "$i" -VHDPath K:\$i\$i.vhdx -BootDevice IDE -Generation 1 -MemoryStartupBytes 220MB -SwitchName "Intel 82579v"
Set-VMMemory -VMName $i -DynamicMemoryEnabled $True -MaximumBytes 220MB -MinimumBytes 80MB -StartupBytes 220MB
$i++
}
строка:2 знак:10
+ while ($i‹11)
+ ~~~
Непредвиденная лексема "‹11" в выражении или операторе.
строка:2 знак:10
+ while ($i‹11)
+ ~
Отсутствует закрывающий знак ")" после выражения в операторе "while".
строка:2 знак:13
+ while ($i‹11)
+ ~
Непредвиденная лексема ")" в выражении или операторе.
строка:8 знак:2
+ }
+ ~
Отсутствует ключевое слово while или until в цикле do.
+ CategoryInfo : ParserError: ( [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken
Автор: sundraw
Дата сообщения: 07.09.2014 11:38
А сейчас то же самое выдаёт немного по-другому

Код:
PS C:\Windows\system32> $i = 3
while ($i<11)
do
{
New-VM -Name "$i" -VHDPath K:\$i\$i.vhdx -BootDevice IDE -Generation 1 -MemoryStartupBytes 220MB -SwitchName "Intel 82579v"
Set-VMMemory -VMName "$i" -DynamicMemoryEnabled $True -MaximumBytes 220MB -MinimumBytes 80MB -StartupBytes 220MB
$i++
}
строка:2 знак:10
+ while ($i<11)
+ ~
Оператор "<" зарезервирован для использования в будущем.
строка:2 знак:14
+ while ($i<11)
+ ~
Отсутствует тело оператора в цикле while.
строка:8 знак:2
+ }
+ ~
Отсутствует ключевое слово while или until в цикле do.
+ CategoryInfo : ParserError: ( [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : RedirectionNotSupported
Автор: angeltwo
Дата сообщения: 08.09.2014 07:12
sundraw
Прошу прощения, ошибся я. Вместо знака меньше "<" надо было "-le" использовать
Автор: Oldster
Дата сообщения: 09.09.2014 19:24
Коллеги, есть вопрос. К примеру если ввести "Get-Process" в консоли posh, то получим нечто такое:

PS C:\Users\user> Get-Process

Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
75 8 1204 3960 42 0,02 1544 armsvc
2895 450 247260 99248 694 30,89 1576 avp
483 49 79856 4012 365 3,54 2984 avpui
32 5 1148 3124 29 0,00 1928 conhost
46 6 1680 4852 63 0,03 2992 conhost
и т.д.

можно ли как то именно этот вывод передать в переменную, а не просто получить массив из всех процессов?
Автор: Tilks
Дата сообщения: 09.09.2014 21:17
Oldster
Не совсем понятно, что вы хотите получить.
$str = Get-process | Out-String
$str.gettype() // String
$str

[Diagnostics.Process[]]$zz = Get-Process
$zz.gettype() // Process[]
$zz[0]
Автор: Oldster
Дата сообщения: 10.09.2014 08:47
Tilks

Цитата:
$str = Get-process | Out-String

Спасибо, это то, что надо, как то я ступил
Автор: BlackSwan
Дата сообщения: 10.09.2014 10:47
Да вам и этого будет достаточно ))
$str = Get-process
Автор: Oldster
Дата сообщения: 10.09.2014 10:59
BlackSwan
нет, к сожалению, результат будет разный между
$str = Get-process
и
$str = Get-process | Out-String
Автор: Oldster
Дата сообщения: 10.09.2014 21:37
Коллеги, еще вопрос.
Делаю так:

Код:
...
$session = New-PSSession -ComputerName srv1,srv2,srv3 -Credential $cred -ErrorVariable err
...
$out = Invoke-Command -Session $session -FilePath c:\my_script.ps1 -ErrorVariable err
...
Write-Host $out
...
Автор: Collapse Troll
Дата сообщения: 05.12.2014 10:20

Цитата:
Вопрос - это решается как то?

а задержку просто вставить?

upd.: или как вариант раскидывать по отдельным файлам
Автор: Oldster
Дата сообщения: 05.12.2014 16:04
Collapse Troll

Цитата:
а задержку просто вставить?

это как и куда ее поставить?
Автор: Collapse Troll
Дата сообщения: 06.12.2014 18:19
а вы что именно хотите сделать? что хотите в итоге получить

Добавлено:
Если например получить процессы с компьютеров, то я бы добавил logon-скрипт в AD, например такой

Код: get-process >\\server\in-out\$env:computername.txt
Автор: Oldster
Дата сообщения: 08.12.2014 08:19
Collapse Troll

Цитата:
а вы что именно хотите сделать? что хотите в итоге получить

Мне надо запускать разные скрипты на многих серверах и получать от них результат, который не "перемешивается". Я уже смирился, что это не получится.
Автор: vat21
Дата сообщения: 20.12.2014 01:29
Всем привет!
Подскажите как выполнить такую задачу:
Проверять каждые 10 минут определенные устройства в сети( по ip) - если ping от 2 и более не приходит то делать рестарт службы.
Я понимаю что надо использовать команды Test-Connection и Restart-Service, но как их привязать пока не хватает мозгов.
Автор: Collapse Troll
Дата сообщения: 22.12.2014 20:26

Цитата:
Проверять каждые 10 минут определенные устройства в сети( по ip) - если ping от 2 и более не приходит то делать рестарт службы.

Если для работы - то можно использовать программу FriendlyPinger, там кажется можно выставить кол-во "долбёжек" и запуск своей программы/скрипта

Страницы: 123456789101112131415161718192021222324

Предыдущая тема: Не понятная проблема с видеокартой.


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.