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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
YuS 2



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

Цитата:
Ок, понял, что это слишком сложно реализуемо

Как оказалось, не слишком сложно, если использовать готовые библиотеки. Спасибо, iNNOKENTIY21
script.ps1

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 11:39 28-11-2020 | Исправлено: YuS 2, 05:16 29-11-2020
iNNOKENTIY21



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

Цитата:
Вряд ли, человек самостоятельно её установит, как минимум, потребуется инструкция...

В раздел «Прикладное программирование», хоть немного знающие люди заходят, не? (риторический)

Цитата:
Как оказалось, не слишком сложно, если использовать готовые библиотеки. Спасибо, iNNOKENTIY21

Спасибо Мозилле и авторам порта

Всего записей: 3523 | Зарегистр. 16-08-2012 | Отправлено: 17:47 28-11-2020
YuS 2



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

Цитата:
хоть немного знающие люди заходят

Ну, об заклад биться не будем, может и найдут самостоятельно...
Просто установка пакетов в powershell, задача нетривиальная, даже для знающих... разобраться, может и разберутся, но времени потеряют уйму...
 

Цитата:
Спасибо Мозилле и авторам порта

И им тоже... но нам-то код и ссылку показал ты, такшта...

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 18:04 28-11-2020 | Исправлено: YuS 2, 18:05 28-11-2020
nikitos435

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Коллеги, подскажите по моему вопросу.
 
Мне нужно данные из атрибута objectGUID учетной записи одного домена скопировать в objectGUID контакта второго домена.
Контакт при этом уже создан.
Названия ou где живут учетные записи и контакты у меня есть.
Помогите, пожалуйста, синтаксисом

Всего записей: 211 | Зарегистр. 20-03-2012 | Отправлено: 09:54 17-02-2021
Retro222

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, вот у меня есть файл ps1. Я его запускаю, он отрабатывается.
Но мне надо его запускать в скрытом виде. Без каких-либо консолей.
Какие для этого надо аргументы?

Всего записей: 260 | Зарегистр. 21-09-2018 | Отправлено: 09:45 03-06-2021
iNNOKENTIY21



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

Цитата:
Подскажите, вот у меня есть файл ps1. Я его запускаю, он отрабатывается.
Но мне надо его запускать в скрытом виде. Без каких-либо консолей.
Какие для этого надо аргументы?

Никакие.
Для этого надо программу запускатор консоли в скрытом режиме.
Выполнение BAT-скриптов без вызова окна консоли
или для запуска исключительно скрипта RunHidePowerSheellScript.vbs
Код:
Sub FileExists(file)
    If (NOT fso.FileExists(file)) Then
        WScript.Echo file, " - не найден."
        Call EndScript()
    End If
End Sub
 
Sub EndScript
    If (NOT IsNull(fso)) Then Set fso = Nothing End If
    If (NOT IsNull(objShell)) Then Set objShell = Nothing End If
    WScript.Quit
End Sub
 
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
 
Dim file
file = Wscript.Arguments(0)
Call FileExists(file)
 
prog = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
args = " -nologo -noninteractive -command "
comd = prog & args & file
 
Set shell = CreateObject("WScript.Shell")
shell.Run comd, 0, false

 
win+r К:\скрипту\vbs\путь\RunHidePowerSheellScript.vbs К:\скрипту\Ps\путь\ВашСкрипт.ps1
и хз если надо будет передать в ps1 параметры...

Всего записей: 3523 | Зарегистр. 16-08-2012 | Отправлено: 11:50 03-06-2021
Retro222

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21, мне надо через метод exec. Я читаю из StdOut.

Всего записей: 260 | Зарегистр. 21-09-2018 | Отправлено: 12:11 03-06-2021 | Исправлено: Retro222, 12:12 03-06-2021
iNNOKENTIY21



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

Цитата:
надо через метод exec. Я читаю из StdOut.  

Это я не понимаю.
 
Сейчас то как запускаете?

Всего записей: 3523 | Зарегистр. 16-08-2012 | Отправлено: 16:35 03-06-2021
teleportex

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
приветствую.
написал команду убийства процесса -  

Код:
gwmi Win32_Process | ? Name -eq 'процесс.exe'|%{$_.terminate()}

но не соображу как убить несколько процессов в одной строке.
(убивать надо именно через Win32_Process)

Всего записей: 973 | Зарегистр. 13-02-2013 | Отправлено: 13:46 04-06-2021 | Исправлено: teleportex, 13:48 04-06-2021
iNNOKENTIY21



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

Цитата:
gwmi Win32_Process | ? Name -eq 'процесс.exe'|%{$_.terminate()}  

тут и так убьёт все 'процесс.exe', если надо разные процессы, то и отбирать надо разные, например:

Код:
[void] (gwmi Win32_Process | ? Name -Match 'Calculator.exe|notepad.exe|paint.exe' | % { $_.terminate() })

Всего записей: 3523 | Зарегистр. 16-08-2012 | Отправлено: 14:01 04-06-2021
teleportex

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

Всего записей: 973 | Зарегистр. 13-02-2013 | Отправлено: 16:08 04-06-2021
Z4masko



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте, подскажите PowerSHell скрипт, который бы запускался в Windiws 10 через планировщик задач и без всяких уведомлений, значков в трее и других информационных окон, каждый раз при включении компьютера и входе в систему пользователя, при подключенном к интернете, отправлял бы  на мой FTP сервер все папки с содержимым внутри их, например из папки C:\logs  
И пропускал бы уже существующие файлы на FTP сервере

Всего записей: 735 | Зарегистр. 05-11-2004 | Отправлено: 11:33 26-12-2022
insorg



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
По вот такому запросу получаю out.xml  
 

Код:
<?xml version="1.0" encoding="UTF-8"?>
<response protocol="3.0" server="prod">
<daystart elapsed_days="5853" elapsed_seconds="48539"/>
<app appid="{8A69D345-D564-463C-AFF1-A69D9E530F96}" cohort="1:gu/i19:" cohortname="Stable Installs &amp; Version Pins" status="ok">
<updatecheck status="ok">
<urls>
<url codebase="http://edgedl.me.gvt1.com/edgedl/release2/chrome/ad2uwza6rxngw4rvu7lrmj5rvtca_109.0.5414.75/"/>
<url codebase="https://edgedl.me.gvt1.com/edgedl/release2/chrome/ad2uwza6rxngw4rvu7lrmj5rvtca_109.0.5414.75/"/>
<url codebase="http://dl.google.com/release2/chrome/ad2uwza6rxngw4rvu7lrmj5rvtca_109.0.5414.75/"/>
<url codebase="https://dl.google.com/release2/chrome/ad2uwza6rxngw4rvu7lrmj5rvtca_109.0.5414.75/"/>
<url codebase="http://www.google.com/dl/release2/chrome/ad2uwza6rxngw4rvu7lrmj5rvtca_109.0.5414.75/"/>
<url codebase="https://www.google.com/dl/release2/chrome/ad2uwza6rxngw4rvu7lrmj5rvtca_109.0.5414.75/"/>
</urls>
<manifest version="109.0.5414.75">
<actions>
<action arguments="--verbose-logging --do-not-launch-chrome --channel=stable" event="install" run="109.0.5414.75_chrome_installer.exe"/>
<action Version="109.0.5414.75" event="postinstall" onsuccess="exitsilentlyonlaunchcmd"/>
</actions>
<packages>
<package fp="1.28184794c0ae4aaabbad69118c3f5f3610e8fa3e258728f3e8bab0246610280d" hash="6yw/b4QQ2jVOs/h9iXQldOipdNE=" hash_sha256="28184794c0ae4aaabbad69118c3f5f3610e8fa3e258728f3e8bab0246610280d" name="109.0.5414.75_chrome_installer.exe" required="true" size="93133352"/>
</packages>
</manifest>
</updatecheck>
</app>
</response>

 
Нужно выцепить значения из выделенных полей в две переменные, например UrlPart1 и UrlPart2. Как это сделать правильно?

Всего записей: 17003 | Зарегистр. 04-11-2010 | Отправлено: 01:05 11-01-2023 | Исправлено: insorg, 01:38 11-01-2023
insorg



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пока что пришёл к варианту  
Код:
$xml = [xml](Get-Content out32r.xml)
$xml.response.app.updatecheck.manifest.packages.package | Where-Object {$_.name} | Select-Object name > test1.txt
$xml.response.app.updatecheck.urls.url | Where-Object {$_.codebase} | Select-Object codebase          > test2.txt
с дальнейшей обработкой текстовиков.
Но как хотя бы это можно сделать однострочным?

Всего записей: 17003 | Зарегистр. 04-11-2010 | Отправлено: 19:25 11-01-2023 | Исправлено: insorg, 19:25 11-01-2023
iNNOKENTIY21



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

Код:

$responce = [xml] (Get-Content -LiteralPath ".\out.xml" -Raw)
$name     = $responce.response.app.updatecheck.manifest.packages.package.name
$urls     = $responce.response.app.updatecheck.urls.url.codebase
 
# $urls[-1] #последняя из списка ссылок
$urls[-1] + $name

 
или без промежуточных файлов in.xml и out.xml

Код:

[xml] $body_xml = @'
<?xml version="1.0" encoding="UTF-8"?>
<request protocol="3.0" ismachine="1" installsource="ondemand" dedup="cr">
    <hw physmemory="4" sse3="1"/>
    <os platform="win" version="10.0" arch="x64"/>
    <app appid="{8A69D345-D564-463C-AFF1-A69D9E530F96}" release_channel="stable"><updatecheck/></app>
</request>
'@
 
$p = @{
    Uri         = "https://tools.google.com/service/update2"
    Method      = 'Post'
    ContentType = 'text/xml'
    Body        = $body_xml
}
 
$responce = Invoke-RestMethod @p
 
$version     = [version] $responce.response.app.updatecheck.manifest.version
$name        = $responce.response.app.updatecheck.manifest.packages.package.name
$urls        = $responce.response.app.updatecheck.urls.url.codebase
$dowloadlink = [uri]::new([uri]$urls[-1], $name)
 
$dowloadlink.AbsoluteUri

 
и добавкой к предыдущему коду, типа проверки версии

Код:

$curr_ver = [version] 1.2.3.4
 
if ($version -gt $curr_ver) {
    "Новая версия: $version - $($dowloadlink.AbsoluteUri)"
    # iwr $dowloadlink.AbsoluteUri -OutFile Z:\Downloads\$name
} else {
    "Обновлений.НЕТ"
}

 

Всего записей: 3523 | Зарегистр. 16-08-2012 | Отправлено: 19:43 11-01-2023
insorg



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Но, как я понял, красивым однострочником это не завернуть, учитывая количество переменных?

Всего записей: 17003 | Зарегистр. 04-11-2010 | Отправлено: 01:10 12-01-2023
iNNOKENTIY21



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

Цитата:
Но, как я понял, красивым однострочником это не завернуть, учитывая количество переменных?

Не знаю, что значит красивым. И целей не знаю…

Код:
(([xml](gc ".\out.xml")).response.app.updatecheck|select @{n='DowloadLink';e={$_.urls.url.codebase[-1]+$_.manifest.packages.package.name}}).DowloadLink

но я бы сохранил скрипт и уже его вызывал.

Всего записей: 3523 | Зарегистр. 16-08-2012 | Отправлено: 16:03 12-01-2023
insorg



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Код:
(([xml](gc ".\out.xml")).response.app.updatecheck|select @{n='DowloadLink';e={$_.urls.url.codebase[-1]+$_.manifest.packages.package.name}}).DowloadLink
Супер. Вообще огонь. Ровно то, что надо было.
 
 

Всего записей: 17003 | Зарегистр. 04-11-2010 | Отправлено: 16:17 12-01-2023
Dacor

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите плиз как сделать несколько значений у переменной?
 
Скрипт проверяет наличие сервисов и делает с ними определенные действия

Код:
 
$servicename = ”SomeService”
if (Get-Service $servicename -ErrorAction SilentlyContinue)
{
Write-Host "$servicename exists"
}
Else {
Write-Host ”$servicename not found”
}
 

 
и в качестве ”SomeService” мне бы хотелось записать несколько известных значений, Service1, Service2, Service3 и чтобы скрипт выполнялся пока не проверит все значения.
 
Такое возможно?

Всего записей: 1489 | Зарегистр. 02-08-2007 | Отправлено: 15:04 22-02-2023
Smitis



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

Цитата:
и в качестве ”SomeService” мне бы хотелось записать несколько известных значений, Service1, Service2, Service3 и чтобы скрипт выполнялся пока не проверит все значения.

Массив?

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

Всего записей: 3233 | Зарегистр. 09-02-2003 | Отправлено: 15:08 22-02-2023
Открыть новую тему     Написать ответ в эту тему

Страницы: 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