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

» PowerShell

Автор: Lich130387
Дата сообщения: 18.10.2012 10:21

Цитата:
Готового решения я не нашел.
Варианты решения: Есть "готовое" решение (см. http://www.zabbix.com/forum/archive/index.php/t-13939.html), но он работает только с x86. Смысл его в том, что к SpeedFun-у прикручивается SNMP "плагин" и по нему происходит обмен информации. На сайте автора "плагина" есть исходники, они достаточно маленькие и разобраться с ними можно! В результате мы получим то, что мы хотим. Так же в комплекте с исходниками идут тестовые утилиты для проверки. Кроме того, в инете есть много примеров, для реализации чтения значений из SpeedFun-а (я находил и под C#). Примеры ищется по слову: "SFSharedMemory_ALM".

посмотрел по ссылке http://www.zabbix.com/forum/archive/index.php/t-13939.html. Что-то не понял, как темпы получать. написано так:

Получилось так что служба SNMP не отдает подобные данные, и пакет lm_sensors не портирован на платформу Windows. Но выход все же есть. Используем следующие инструменты SpeedFan – http://www.almico.com/sfdownload.php и SFSNMP – это плугин для сбора статистика SpeedFan’а по SNMP – http://code.bastart.eu.org.nyud.net/files/sfsnmp-0.0.4-12.msi
перезапускаем на всякий случай snmp службу и сам speedfan. Теперь данные можно брать по SNMP через следующие OID’ы

.1.3.6.1.4.1.16.0.1.x – Температура (.0 – HDD; .1 – Temp1 – материнская плата; .2 – Memory; .3 – CPU; .4 – GPU)
.1.3.6.1.4.1.16.0.2.x – Частота вращения кулеров
.1.3.6.1.4.1.16.0.3.x – Напряжение

Непонятно, куда это вводить....

"net use G: /delete /y" - что здесь означает "/y"?
Автор: Oldster
Дата сообщения: 18.10.2012 10:24
Lich130387
забудь про SNMP, это было привязано непосредственно к моей задачи, лучше поищи как с помощью PowerShell достать "SFSharedMemory_ALM"
Автор: Lich130387
Дата сообщения: 18.10.2012 10:34
Oldster
ладно, а по вопросу с кодировками ничего не можешь сказать?

кстати, в командной строке команда chcp 866 помогает изменить кодировку, надпись становится понятной. а вот если ввожу команду chcp 1251, то опять не по-русски всё становится. В PowerShell ISE такое не проканывает.
нашёл инфу в этой статье. получилось исправить непонятные символы на английские, но хотелось бы, чтобы выдавало это на русском.
http://anvarichn.livejournal.com/43752.html

Кстати, разбирать сам код я Вас, Oldster, не просил, только с кодировкой помочь разораться....
Автор: Oldster
Дата сообщения: 18.10.2012 10:48
Lich130387
PowerShell ISE - я этим не пользуюсь, предпочитаю PowerGUI.

PS: смотри ПМ
Автор: amnon10
Дата сообщения: 20.10.2012 17:39
Народ, нужна помощь
Мозк сломался уже...

Задача такая: Есть Вотч фолдер как только туда попадает файл
Нужно получить количество трэков и потом сделать демукс


Код:
$folder = '\\server\video\wf\Muxer\Watch\DeMuxer\tmp\'
$filter = '*.mpg'
$timeout = 1000
$FileSystemWatcher = New-object System.IO.FileSystemWatcher $folder , $filter
$logformat = Get-Date -f "yyyy-MM"
$Date = Get-Date -f "yyyy-MM-dd"
$log = "C:\Script\Log\Watch_$Date.txt"
$logtime = Get-Date -f "HH:mm:ss"
$o = dir $Path
$CONV = "\\server\video\wf\Muxer\Converted\DeMuxer\"
$tool = "C:\Tools\ffmpeg.exe"
Write-Output "`n" "$Date $logtime Start" >> $Log


Write-Host "Press any key to abort monitoring $folder"

do {
$result = $FileSystemWatcher.WaitForChanged("changed", $timeout)

if ($result.TimedOut -eq $false) {
'{0} : {1}' -f (Get-Date), $result.Name |
Out-File $log -Append
$path = $folder + $result.Name
Write-Host $path
$o = dir $path
Write-Host "Script exit"
$STREAMS = 3
$COM = '-y -i ' + $o.FullName + ' -map 0:0 -vcodec copy ' + $CONV + $o.BaseName + '.m2v '
$val = 0
While ($val -ne $STREAMS)

{
$val++
$COM = $COM + '-map 0:' + $val + ' -acodec copy ' + $CONV + $o.BaseName + '_track' + $val + '.mp2 '
}

Start-Job Invoke-Expression "$tool $COM"

rm $o -Force
Write-Output "$logtime Mux seccessfull $o" >> $log
}

} until ( [System.Console]::KeyAvailable )
Автор: amnon10
Дата сообщения: 22.10.2012 04:09
Разобрался.
Вся часть которая обрабатывает файл вынес в отдельный скрипт и его запускаю через Start-Job

Но появилась другая проблема.
Нужно получить количество стримов в MPG..
Автор: amnon10
Дата сообщения: 08.11.2012 16:54
На всякий случай.. обновлю
стримы получаю через ffprob
Если нужны подробности, свисните
Автор: Lich130387
Дата сообщения: 27.11.2012 04:09
В справке к PowerShell'у есть такой пример:


Цитата:
Пример 4

C:\PS>add-content -value (get-content test.log) -path C:\tests\test134\logs\test134.log

Описание
-----------
Эта команда создает новые каталог и файл и копирует содержимое существующего файла в созданный файл.

Для добавления содержимого в данной команде используется командлет Add-Content. Значение параметра Value представляет собой команду Get-Content, которая получает содержимое из существующего файла, Test.log.

Значение параметра Path — это путь, который на момент запуска команды не существует. В данном примере существуют только каталоги C:\Tests. Остальные каталоги и файл Test134.log создаются командой.

Параметр Force для этой команды не требуется. Командлет Add-Content создает каталоги для завершения заданного пути даже без параметра Force.

Я использовал этот командлет в своём скрипте, но он не создавал у меня папке. Думал, что дело в скрипте или как я там всё пишу.
Но если я даже вставляю код из примера в PS, он выдаёт мне ошибку и ничего не создаёт.
Ошибка такая:
Add-Content : Не удалось найти часть пути "C:\tests\test134\logs\test134.log".
строка:1 знак:12
+ add-content <<<< -value (get-content test.log) -path C:\tests\test134\logs\test134.log
+ CategoryInfo : ObjectNotFound: (C:\tests\test134\logs\test134.log:String) [Add-Content], DirectoryNotFo
undException
+ FullyQualifiedErrorId : GetContentWriterDirectoryNotFoundError,Microsoft.PowerShell.Commands.AddContentCommand


Добавлено:
Кстати, пока обхожусь командлетом New-Item. Создаю с его помощью директорию (файл уже создаёт add-content, причём без проблем).
Но всё равно интересно, можно ли ограничиться одним add-content.
Автор: skanja
Дата сообщения: 28.11.2012 17:54
Подскажите, есть такая команда:
Select-String "слово" .\text.txt | Foreach-Object {$_.Line} > out.txt

Но она не работает с файлами в кодировке windows-1251.
Есть решение или это невозможно?
Автор: Lich130387
Дата сообщения: 04.12.2012 08:29
Другой вопрос.

Пытаюсь запустить приложение wincontig (дефрагментатор).

Вот такой код в скрипте:

Код:
$disk = "F:\"
$keys = "/NOGUI /DEFRAG"
$soft = "C:\test\WContig\WinContig.exe"

&$soft $disk $keys
Автор: DevisKurpatov
Дата сообщения: 11.12.2012 15:35
Здраствуйте люди и гуру PowerShell'a! Я тут столкнулся с задачей:
У меня есть скрипт(не мой, нашел в интернете), переделал его под свой домен! Он добовляет пользователей в Домен! Проблема заключается в том что он кладет в стандартную группу членства домена! А у меня этих групп куча, помогите понять куда надо вставить ADD-AdGroupMember и с какими параметрами! Не сильно силен в PowerShell'e но стремительно хочу познать его! Вот скрипт: http://rusfolder.com/34054801
Автор: FastCat
Дата сообщения: 30.12.2012 15:10
Подскажите, как пользоваться этим PowerShell скриптом ?


Код: function add-hostfilecontent {
[CmdletBinding(SupportsShouldProcess=$true)]
param (
[parameter(Mandatory=$true)]
[ValidatePattern("\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b")]
[string]$IPAddress,

[parameter(Mandatory=$true)]
[string]$computer
)
$file = Join-Path -Path $($env:windir) -ChildPath "system32\drivers\etc\hosts"
if (-not (Test-Path -Path $file)){
Throw "Hosts file not found"
}
$data = Get-Content -Path $file
$data += "$IPAddress $computer"
Set-Content -Value $data -Path $file -Force -Encoding ASCII
}
Автор: Oldster
Дата сообщения: 30.12.2012 18:54
FastCat
Вероятнее всего вызвать эту функцию с параметрами, например так:

add-hostfilecontent -IPAddress 127.0.0.1 -computer localhost

Скрипт должен работать не только в W8 но и в W7
Автор: FastCat
Дата сообщения: 30.12.2012 19:48
Oldster
А как сделать так, что бы PowerShell знал о такой функции hostfilecontent ?
Автор: Oldster
Дата сообщения: 01.01.2013 11:41
FastCat
сохрани это в файл name.ps1

Код:
function add-hostfilecontent {
[CmdletBinding(SupportsShouldProcess=$true)]
param (
[parameter(Mandatory=$true)]
[ValidatePattern("\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b")]
[string]$IPAddress,

[parameter(Mandatory=$true)]
[string]$computer
)
$file = Join-Path -Path $($env:windir) -ChildPath "system32\drivers\etc\hosts"
if (-not (Test-Path -Path $file)){
Throw "Hosts file not found"
}
$data = Get-Content -Path $file
$data += "$IPAddress $computer"
Set-Content -Value $data -Path $file -Force -Encoding ASCII
}

add-hostfilecontent -IPAddress 127.0.0.1 -computer localhost
Автор: Vitalik85
Дата сообщения: 20.01.2013 20:18
При обновлении Vista требует удалить windows powershell. Ни в программах, ни в установленных пакетах ее нет. Скачал пакет установки, при установке тоже ошибка. Как выйти из этой ситуации и все-таки его удалить?
Или может он в тот же фремеворк входит?
Автор: Oldster
Дата сообщения: 21.01.2013 19:24
Vitalik85
POSH вроде как апдейтом ставится, имхо надо там искать


Добавлено:
вроде как эти:
Windows6.0-KB928439-x64.msu
Windows6.0-KB928439-x86.msu
смотри по номеру и удаляй из системы.
Автор: MadSeas0n
Дата сообщения: 26.01.2013 16:59
Господа, прошу помощи.
Необходимо с удаленной машины собирать ивенты с определённым ID за последний, скажем, час.
Запрос следующего вида:
Get-Eventlog -logname "security" -computername $server -after (Get-Date).AddHours(-1) | Where-Object {$_.eventID -eq 540} | Select-Object EventID,Category,UserName,TimeGenerated | Format-List
Справляется с этим на ура, но есть одно "НО"...после выполнения запроса шелл не возвращает командную строку, а просто повисает с мигающим курсором и всё. С локальной машиной результат тот же. При этом, если заментить параметр -after на -newest, всё проходит как по маслу. Может сталкивался кто-нибудь, подскажите, в каком направлении думать. Заранее спасибо.
Автор: Oldster
Дата сообщения: 26.01.2013 17:15
MadSeas0n
Могу предложить использовать вначале New-PSSession для подключения к компу\серверу, а потом Invoke-Command, как описано тут
Автор: zloyweagle
Дата сообщения: 31.01.2013 07:53
Уважаемые Гуру! Нужна ваша помощь! На днях перестал запускаться PowerShell, выдаёт след. сообщение:
d:\Backup_ATS\CCR>powershell.exe
Windows PowerShell
(C) Корпорация Майкрософт, 2012. Все права защищены.

PS d:\Backup_ATS\CCR> Windows PowerShell завершена из-за следующей ошибки:
Невозможно загрузить файл или сборку "System.Management.Automation, Version=3.0
.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" или один из зависимых от
них компонентов. Ожидалось, что модуль содержит манифест сборки.

d:\Backup_ATS\CCR>
В инетах ничего не нашёл(
PS: система Win 2008 R2 Standart SP1 x64
Автор: customkeys
Дата сообщения: 06.03.2013 13:28
Доброго времени суток.
Прошу помочь в написании PS-скрипта.
Задача такая: есть сетевой путь "\\server1\folders", где находятся десятки именных папок пользователей с файлами, например Ivanov, Petrov, Sidorov и т.д.; есть csv-файл, в котором указаны имена папок, которые надо скопировать/переместить в "\\server2\archive" (csv-файл формата: NAME и далее в столбик наименования папок, которые нужно скопировать/перенести).

Сам скрипт:

Код: $csv="C:\users.csv"
$serv1="\\server1\folders"
$serv2="\\server2\archive"
Import-Csv -Path $csv | ForEach-Object {Copy-Item -Path $serv1 -Recurse -Destination $serv2 $_.NAME -force}
Автор: korggrodno
Дата сообщения: 15.04.2013 07:13
хочу создать массив состоящий из одного элемента
который является массивов состоящим из двух элементов
пытаюсь так
$spel = @(    @("178.124.153.32","SPEL_base")    )
и так
[object[,]] $spel = @("178.124.153.32","SPEL_base")
и так
$spel = [array]([array]("178.124.153.32","SPEL_base"))
но по прежнему $spel превращается в одномерный массив из двух элементов

если делаю так
$spel = ([array[]]("178.124.153.32","SPEL_base"))
то получучаю такое значение
{{178.124.153.32}, {SPEL_base}}
а мне нужно добиться во такого значения
{{178.124.153.32, SPEL_base}}

Причем если делать вот так
$spel = @(    @("178.124.153.32","SPEL_base"), @("178.124.153.32","SPEL_base") )
то получается все как надо вот такое значение
{{178.124.153.32, SPEL_base}, {178.124.153.32, SPEL_base}}
проблема возникает когда в массиве один элемент

Добавлено:
надо так (,("178.124.153.32","SPEL_base"))
спасибо
Автор: py6jlb125
Дата сообщения: 24.04.2013 16:49
Как с помощью WMI получить пользователя который на компе залогинился (комп будет из списка и вывод должен быть "имя компа-имя пользователя") если можно с примерами!!!!!
Автор: Oldster
Дата сообщения: 25.04.2013 08:32
py6jlb125
не совсем понятно при чем тут PowerShell и как именно зашли на комп.
если через RDP - то анализируй журнал безопасности, например так (W2K8 R2):

$dtNow = Get-Date
$dtPrev = $dtNow.AddHours(-1) # Читаем данные за последний час
$login = @() # Массив подключения пользователя
$logout = @() # Массив отключения пользователя

Get-EventLog -LogName security | Where -FilterScript {
($_.TimeWritten -le $dtNow -and $_.TimeWritten -ge $dtPrev -and $_.EventID -eq 4624 -and $_.ReplacementStrings[8] -eq 10)} |
ForEach-Object {
    $login += New-Object PSObject -Property @{
        ComputerName = $env:ComputerName
        TimeGenerated = $_.TimeGenerated
        User = $_.ReplacementStrings[5]
        Ip = $_.ReplacementStrings[18]
        SessionID = $_.ReplacementStrings[7]
}
}

Get-EventLog -LogName security | Where -FilterScript {
($_.TimeWritten -le $dtNow -and $_.TimeWritten -ge $dtPrev -and $_.EventID -eq 4634 -and $_.ReplacementStrings[4] -eq 10)} |

ForEach-Object {
    $logout += New-Object PSObject -Property @{
        ComputerName = $env:ComputerName
        TimeGenerated = $_.TimeGenerated
        User = $_.ReplacementStrings[1]
        SessionID = $_.ReplacementStrings[3]
}
}
$login
$logout
Автор: py6jlb125
Дата сообщения: 25.04.2013 14:42
поясняю, пишу скрипт, который проверяет включенность компов в сети, этот скрипт выводит список имен включенных компов(написано на повешеле), таперь нужно чтоб помимо имени компа полочалось еще и имя пользователя зработающего за этим компом в данный момент,


принцип действия такой: скрипт выгребает из AD список имен компов, потом с помощью wmi и test-connection они пингуються и если комп в сети то в файл записываеться его имя, дальше нужно из этого файла взять поочереди имена и определять пользователя, потом записывать строку " имякомпа-пользователь" в третий файл!!! вот проблема как раз таки в определнии имени пользователя!!!! очень прошу помочь.
Автор: rsendru
Дата сообщения: 26.04.2013 21:58
To py6jlb125


Посмотрите этот скрипт, который проверяет запущен ли процесс на компьютерах в сети. Он не совсем по Вашей теме, но в нем Вы найдете ответы на вопросы по пингованию компьютеров, определению имени компьютера, имени зарегистрированного пользователя, полного пути организационного подразделения, типа операционной системы и др.

http://rsend.ru/blogru.htm#P3.5
Автор: Oldster
Дата сообщения: 27.04.2013 12:41
py6jlb125
если есть AD и все компы в домене, то проще воспользоваться простым скриптом, типа этого:

echo %date% %time% - logon %username% at %computername%>>\\server\logons\logons.log

и повесить его в груп. политиках на логин\логаут, проще и быть не может. у меня так и было сделано.
Автор: py6jlb125
Дата сообщения: 29.04.2013 08:22
Дело в том что права в домене ограниченны и досупа к групповым политикам нету, поэтому и использую такой "сложный" скрипт.

Добавлено:
разобрался со своим скриптом, но есть проблема, выполняю Get-content из файла в переменную, а потом использую цикл foreach то имена из файла передаются с одним лишим пробелом, и поэтому ни как не получается получить ответ(просто получается неправильное имя!!!!), как можно решить проблему с лишним пробелом при чтении из файла!!????? Заранее спасибо!!!
Автор: ChronoAngel
Дата сообщения: 22.05.2013 18:23
Гуру подскажите,куда что прописать что бы PowerShell ISE крякозяблы не писал вместо русского языка?
Автор: Pompeii
Дата сообщения: 02.09.2013 11:06
...
$IncludeFiles = ("*.jpg","*.avi","*.mpg")
Get-ChildItem -Path $mydrive -Recurse -Include $IncludeFiles

Мне надо что бы IncludeFiles брались не из списка а из файла в котором уже будет их перечисление.
$IncludeFiles = "С:\IncludeFiles.txt"

Как правильно в файле перечислять их?

Страницы: 123456789101112131415161718192021222324

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


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