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

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

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

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

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

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

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

Всего записей: 963 | Зарегистр. 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() })

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

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

Всего записей: 963 | Зарегистр. 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. Как это сделать правильно?

Всего записей: 16698 | Зарегистр. 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
с дальнейшей обработкой текстовиков.
Но как хотя бы это можно сделать однострочным?

Всего записей: 16698 | Зарегистр. 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 {
    "Обновлений.НЕТ"
}

 

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



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

Всего записей: 16698 | Зарегистр. 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

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

Всего записей: 3521 | Зарегистр. 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
Супер. Вообще огонь. Ровно то, что надо было.
 
 

Всего записей: 16698 | Зарегистр. 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 и чтобы скрипт выполнялся пока не проверит все значения.
 
Такое возможно?

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



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

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

Массив?

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

Всего записей: 3216 | Зарегистр. 09-02-2003 | Отправлено: 15:08 22-02-2023
Dacor

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

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



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

Цитата:
 
@("wuauserv", "LanmanServer") | ForEach-Object -Process {
    if (Get-Service -Name $_ -ErrorAction SilentlyContinue)
    {
        Write-Host -Object "$_ exists"
    }
    else
    {
        Write-Host -Object "$_ not found"
    }
}
 

Всего записей: 2477 | Зарегистр. 27-07-2009 | Отправлено: 15:19 22-02-2023
LevT



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

Код:
 
$serviceslist = @('ALG',"Audiosrv",'Service3')
 
$presentservices = Get-Service | Where-Object Name -in $serviceslist  
 
$missingservices = $serviceslist | Compare-Object (Get-Service).Name | Where-Object SideIndicator -eq "=>"
 
$missingservicesnames = ($missingservices).InputObject
 


Всего записей: 17166 | Зарегистр. 14-10-2001 | Отправлено: 15:20 22-02-2023 | Исправлено: LevT, 15:49 22-02-2023
Dacor

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag
«Default variable» - это очень элегантно! Потрясающе!
Но вот можно уточнить еще такой момент. Если я заключаю $_ в кавычки "$_" или '$_' то не работает, работает только без кавычек.
Stop-Service -Name $_       -работает
Stop-Service -Name '$_'      -нет
и в то же время Stop-Service -Name 'PlugPlay' - работает
 
 
LevT
Спасибо, этот вариант я использую в другом месте!

Всего записей: 1483 | Зарегистр. 02-08-2007 | Отправлено: 16:16 22-02-2023 | Исправлено: Dacor, 17:32 22-02-2023
iNNOKENTIY21



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

Код:

$errs   = $null
$Exists = Get-Service -Name 'ALG', "Audiosrv", 'Service3', 'Service4' -ErrorVariable errs 2> $null
 
$Exists | ForEach-Object {
    Write-Host ("{0} - {1}" -f $_.ServiceName, $_.Status) -ForegroundColor Green
}
 
$errs | ForEach-Object {
    Write-Host ("{0} - {1}" -f $_.exception.ServiceName, $_.exception.Message) -ForegroundColor Red
}
 

Всего записей: 3521 | Зарегистр. 16-08-2012 | Отправлено: 17:50 22-02-2023 | Исправлено: iNNOKENTIY21, 17:53 22-02-2023
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dacor
А зачем в кавычки все заключать? Заключать надо лишь тогда, когда есть пробелы или переменные, которые трактуются не так системой. В остальном это бессмысленно.

Всего записей: 2477 | Зарегистр. 27-07-2009 | Отправлено: 14:17 23-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