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

» PowerShell

Автор: Etalon
Дата сообщения: 28.09.2006 15:20
Для XP
Автор: KapralBel
Дата сообщения: 29.09.2006 09:36
В русской версии для ХР английская документация
В русской версии для 2003 - русская
Выдрал и выложил на RS
Это саморасаковывающийся архив, который кинет доки на нужное место
Автор: Etalon
Дата сообщения: 29.09.2006 10:25
Хорошее подспорье в работе

Добавлено:
Подправил подшаманеную Русскую версию для Windows XP
http://dl.rapidshare.ru/55406/49789/PowerShell.RC2.Rus.zip
Автор: KapralBel
Дата сообщения: 02.10.2006 10:16
Большой сорри
При формировании первого варианта русской справки допустил ошибку
Исправленный вариант
Старый стерт

Добавлено:
Поправлена в шапке ссылка на версию 2003-англ
Автор: Etalon
Дата сообщения: 04.10.2006 07:32
Вышел
Windows PowerShell 1.0 MUI update package for Windows Server Service Pack 1 and for Windows XP Service Pack 2

Цитата:

Note The Windows PowerShell 1.0 RC2 MUI update package supports the following 10 languages:

• German
• Spanish
• French
• Italian
• Japanese
• Korean
• Portuguese
• Russian
• Chinese – Simplified
• Chinese – Traditional

The Windows PowerShell 1.0 RC2 MUI update package installs additional files for these languages.

Автор: KapralBel
Дата сообщения: 04.10.2006 08:42
Etalon
Если есть русская версия - то зачем MUI?
Автор: Etalon
Дата сообщения: 04.10.2006 09:02
Он же будет распространяться как обновление Windows
И мне будет проще, на 50 компьютеров, установить английскую версию с МУИ
через WSUS, чем бегать от компьютера к компьютеру и устанавливать подшаманеную русскую версию.
Автор: KapralBel
Дата сообщения: 05.10.2006 14:57
Первая версия скрипта, который ананализирует ошибки и проблемы в EventLog за указанный период времени и отсылающий информацию по E-Mail
[more=Скрипт]
# v1.0
# =====================
# ==================== Константы - начало
# =====================
# Частота вызова скрипта
# $Interval - частота вызова в единицах, заданных в $IntervalSelector
# $IntervalSelector - временной интервал
# h - часы
# n - минуты
# d - дни (default)
# m - месяцы

$iInterval=12
$strIntervalSelector='h'
$EMailTo='Administrator@Company.com'
$EmailFrom='Server@Company.Com'
$SMTPHost='SMTP.Company.Com'
$SMTPPort=25

# =====================
# ==================== Константы - конец
# =====================



$dtNow=Date
If ($strIntervalSelector -eq 'h')
{
$dtPrev=$dtNow.AddHours(-$iInterval)
}
ElseIf ($strIntervalSelector -eq 'n')
{
$dtPrev=$dtNow.AddMinutes(-$iInterval)
}
ElseIf ($strIntervalSelector -eq 'm')
{
$dtPrev=$dtNow.AddMonths(-$iInterval)
}
Else
{
$dtPrev=$dtNow.AddDays(-$iInterval)
}
$dtPrev=$dtPrev.AddMinutes(-2)

$objEventLogs=Get-EventLog -list
For($i=0;$i -lt $objEventLogs.Count;$i++)
{
$objEventLog=$objEventLogs.Get($i)
$objEventLogMessages=Get-EventLog $objEventLog.Log
$strLog=""+$objEventLog.Log+".htm"
$iCountOfErr=0
For($j=0;$j -lt $objEventLogMessages.Count;$j++)
{
$objEventLogMessage=$objEventLogMessages[$j]
If ($objEventLogMessage.TimeWritten -lt $dtPrev) {Break}
If ($objEventLogMessage.get_EntryType().ToString() -eq 'Information') {continue}
If ($objEventLogMessage.get_EntryType().ToString() -eq '0') {continue}
$iCountOfErr=$iCountOfErr+1
$strMsg='Ошибки и предупреждения по журналу ['+$objEventLog.LogDisplayName+'] за период ['+$dtPrev.ToString('dd/MM/yyyy, hh:mm:ss')+" .. "+$dtNow.ToString('dd/MM/yyyy, hh:mm:ss')+']'
If ($iCountOfErr -eq 1)
{
'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">'>$strLog
'<html>'>>$strLog
'<head><title>'+$strMsg+'</title>'>>$strLog
'</head>'>>$strLog
'<h2 align="center">'+$strMsg+'</h2>'>>$strLog
'<table width="100%" border="1" cellspacing="2" cellpadding="2" align="center">'>>$strLog
'<tr><th>№</th><th>Тип</th><th>Дата</th><th>Время</th><th>Комп</th><th>Пользователь</th><th>Сообщение</th></tr>'>>$strLog
}
'<tr align="left">'>>$strLog
'<td>'+$iCountOfErr+'</td>'>>$strLog
'<td>'+$objEventLogMessage.get_EntryType().ToString()+'</td>'>>$strLog
'<td>'+$objEventLogMessage.TimeWritten.ToString('dd/MM/yyyy')+'</td>'>>$strLog
'<td>'+$objEventLogMessage.TimeWritten.ToString('hh:mm:ss')+'</td>'>>$strLog
'<td>'+$objEventLogMessage.MachineName+'&nbsp;</td>'>>$strLog
'<td>'+$objEventLogMessage.UserName+'&nbsp;</td>'>>$strLog
'<td>'+$objEventLogMessage.Message+'</td>'>>$strLog
'</tr>'>>$strLog
}
If ($iCountOfErr -gt 0)
{
'</table>'>>$strLog
'</body>'>>$strLog
'</html>'>>$strLog
$Attach = new-object System.Net.Mail.Attachment($strLog)
$SMTPClient = new-object System.Net.Mail.SMTPClient
$Msg = new-object System.Net.Mail.MailMessage
$Msg.Attachments.add($Attach)
$Msg.To.Add($EMailTo)
$Msg.From = $EMailFrom
$Msg.Subject = $strMsg
$Msg.Body = $strMsg
$SMTPClient.Host = $SMTPHost
$SMTPClient.Port = $SMTPPort
$SMTPClient.Send($Msg)
}
}
[/more]
Автор: KLASS
Дата сообщения: 08.10.2006 14:05
На Складе выложил русскую документацию в формате .CHM (1Мб). Ссылку добавил в шапку.
Автор: Etalon
Дата сообщения: 09.10.2006 13:02
Хорошая справочка. Я так понимаю переработанный UserGuide.doc.

Вот только не понятно. Такая мощная оболочка, а для работы с сетевыми дисками предлагается использовать объекты WSH.
Неужели, к релизу, не предложат никаких встроенных инструментов?
Автор: KLASS
Дата сообщения: 09.10.2006 13:52

Цитата:
Я так понимаю переработанный UserGuide.doc

В справке всё (или, пока, почти всё) из русских *.RTF, *.TXT, *.XML идущих с сабжем. Кое-что повторяющееся (типа, авторское право, введение, etc) в справке оставил в одном экземпляре.
Автор: KapralBel
Дата сообщения: 09.10.2006 13:54
Etalon
А что тебе надо с ними делать?
Set-Location \\Server\C$ - работает
Автор: Etalon
Дата сообщения: 09.10.2006 14:05
KLASS
Хорошая справка. Спасибо.

KapralBel
Да в общемто ничего особенного. Так чтобы у пользователей буковки были типа X:>, Y:>, Z:>.
Автор: KapralBel
Дата сообщения: 09.10.2006 15:47
Etalon
Слабо воспользоваться такой конструкцией

Код: New-PSDrive -name Q -PSProvider FileSystem -Root \\Srv1\C$
Автор: Etalon
Дата сообщения: 09.10.2006 17:05

Цитата:

К сожалению от сессии к сессии не сохраняется

, в Проводнике и прочей файлово-навигационной дребедени не отображается.
Потому и слабо.

Хотя, в прочем это мелочь. Net Use то всё равно никуда не девается
Автор: KapralBel
Дата сообщения: 10.10.2006 09:15
Etalon
Понравилась фича

Код: New-PSDrive -Name RemoteDoc -PSProvider FileSystem -Root \\Srv1\C$\Net\Documents\Departaments\ASUP
Set-Location RemoteDoc:
Автор: KapralBel
Дата сообщения: 11.10.2006 15:38
В шапке поправил ассоциацию на .PS1 в старом варианте параметры внуть скрипта не передавались
Автор: KapralBel
Дата сообщения: 16.10.2006 12:24
[more=Версия 2.0 скрипта, посылающего ошибки и предупреждения, возникающие в журнале событий на E-Mail]
# v2.0
# =====================
# ==================== Константы - начало
# =====================
# Частота вызова скрипта
# $Interval - частота вызова в единицах, заданных в $IntervalSelector
# $IntervalSelector - временной интервал
# h - часы
# n - минуты
# d - дни (default)
# m - месяцы
$iInterval=1
$strIntervalSelector='d'
$bLastTime='y'
$EMailTo='Administrator@Firma.Ru'
$EmailFrom='Server@Firma.Ru'
$SMTPHost='Local.Mail.Firma.Ru'
$SMTPPort=25
# =====================
# ==================== Константы - конец
# =====================

For ($i=0;$i -lt $Args.Count;$i++)
{
If ($Args[$i] -eq '-Time') { $iInterval=$Args[$i+1] }
If ($Args[$i] -eq '-S') { $strIntervalSelector=$Args[$i+1] }
If ($Args[$i] -eq '-DateTime') { $bLastTime='n' }
}


$dtNow=Date
If ($strIntervalSelector -eq 'h')
{
$dtPrev=$dtNow.AddHours(-$iInterval)
}
ElseIf ($strIntervalSelector -eq 'n')
{
$dtPrev=$dtNow.AddMinutes(-$iInterval)
}
ElseIf ($strIntervalSelector -eq 'm')
{
$dtPrev=$dtNow.AddMonths(-$iInterval)
}
Else
{
$dtPrev=$dtNow.AddDays(-$iInterval)
}

if ($bLastTime -eq 'y')
{
$FileExist = Get-ChildItem -Path C:\EL.ini -Force -ErrorAction SilentlyContinue
If ($FileExist.Exists)
{
$strTmp = Get-Content -Path C:\EL.ini -Force -ErrorAction SilentlyContinue
$DtPrev = Get-Date -Date $strTmp
}
Else
{
$dtPrev=$dtPrev.AddMinutes(-2)
}
}
Set-Content -Path C:\EL.ini $dtNow
$objEventLogs=Get-EventLog -list
$iCountErr=0
For($i=0;$i -lt $objEventLogs.Count;$i++)
{
$objEventLog=$objEventLogs.Get($i)
$objEventLogMessages=Get-EventLog $objEventLog.Log
$strLog=""+$objEventLog.Log+".htm"
$iCountOfErr=0
For($j=0;$j -lt $objEventLogMessages.Count;$j++)
{
$objEventLogMessage=$objEventLogMessages[$j]
If ($objEventLogMessage.TimeWritten -lt $dtPrev) {Break}
If ($objEventLogMessage.get_EntryType().ToString() -eq 'Information') {continue}
If ($objEventLogMessage.get_EntryType().ToString() -eq '0') {continue}
$iCountOfErr++
$iCountErr++
$strMsg='Ошибки и предупреждения по журналу ['+$objEventLog.LogDisplayName+'] за период ['+$dtPrev.ToString('dd/MM/yyyy, HH:mm:ss')+" .. "+$dtNow.ToString('dd/MM/yyyy, HH:mm:ss')+']'
$strMsg1='Ошибки и предупреждения по журналу ['+$objEventLog.LogDisplayName+']<br>за период ['+$dtPrev.ToString('dd/MM/yyyy, HH:mm:ss')+" .. "+$dtNow.ToString('dd/MM/yyyy, HH:mm:ss')+']'
If ($iCountOfErr -eq 1)
{
Out-File -FilePath $strLog -Encoding default -InputObject ('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">')
Out-File -FilePath $strLog -Encoding default -Append -InputObject ('<html>')
Out-File -FilePath $strLog -Encoding default -Append -InputObject ('<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />')
Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('<head><title>'+$strMsg+'</title>')
Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('</head>')
Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('<h2 align="center">'+$strMsg1+'</h2>')
Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('<table width="100%" border="1" cellspacing="2" cellpadding="2" align="center">')
Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('<tr><th>№</th><th>Тип</th><th>Дата</th><th>Время</th><th>Комп</th><th>Пользователь</th><th>Сообщение</th></tr>')
}
Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('<tr align="left">')
Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('<td>'+$iCountOfErr+'</td>')
Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('<td>'+$objEventLogMessage.get_EntryType().ToString()+'</td>')
Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('<td>'+$objEventLogMessage.TimeWritten.ToString('dd/MM/yyyy')+'</td>')
Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('<td>'+$objEventLogMessage.TimeWritten.ToString('HH:mm:ss')+'</td>')
Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('<td>'+$objEventLogMessage.MachineName+'&nbsp;</td>')
Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('<td>'+$objEventLogMessage.UserName+'&nbsp;</td>')
Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('<td>'+$objEventLogMessage.Message+'</td>')
Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('</tr>')
}
If ($iCountOfErr -gt 0)
{
Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('</table>')
Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('</body>')
Out-File -FilePath $strLog -Encoding UTF8 -Append -InputObject ('</html>')
$Attach = new-object System.Net.Mail.Attachment($strLog)
$SMTPClient = new-object System.Net.Mail.SMTPClient
$Msg = new-object System.Net.Mail.MailMessage
$Msg.Attachments.add($Attach)
$Msg.To.Add($EMailTo)
$Msg.From = $EMailFrom
$Msg.Subject = $strMsg
$Msg.Body = $strMsg
$SMTPClient.Host = $SMTPHost
$SMTPClient.Port = $SMTPPort
$SMTPClient.Send($Msg)
}
}

If ($iCountErr -eq 0)
{
$strMsg='За период ['+$dtPrev.ToString('dd/MM/yyyy, HH:mm:ss')+" .. "+$dtNow.ToString('dd/MM/yyyy, HH:mm:ss')+'] ошибок и предупреждений в журнале собыйтий нет'
$SMTPClient = new-object System.Net.Mail.SMTPClient
$Msg = new-object System.Net.Mail.MailMessage
$Msg.To.Add($EMailTo)
$Msg.From = $EMailFrom
$Msg.Subject = $strMsg
$Msg.Body = $strMsg
$SMTPClient.Host = $SMTPHost
$SMTPClient.Port = $SMTPPort
$SMTPClient.Send($Msg)
}
[/more]

История
+ По умолчанию, отрабатывает события прошедшие с момента последнего запуска
+ Управление интервалом времени для обработки событий доступы в командной строке
+ В случае ненахождения ошибок, посылается Е-Майл с информацией об этом
* Исправлена кодировка .html, посылаемая вложением
* различные мелкие правки

To-Do
1. Добавить локализацию под разные языки
Автор: WRFan
Дата сообщения: 08.11.2006 20:25
PowerShellCx добавляет пункт "открыть powershell тут", не знаю, писалось ли об этом уже.

http://www.codeplex.com/Project/FileDownload.aspx?ProjectName=PowerShellCX&DownloadId=3448

программа кстати страшно медленно стартуется, так секунд 10. в шапке есть линк на инструкцию для ускорения, но там же написано, что это только для rc1, а у меня уже rc2, всё равно медленно
Автор: Etalon
Дата сообщения: 15.11.2006 12:38
Скачать релиз Windows PowerShell 1.0
Автор: LexusSad
Дата сообщения: 15.11.2006 15:38
Интересно, будет ли она быстрее запускаться, а то тормоза...
Кстати есть ли возможность с помощью PS запускать, просматривать, останавливать и т.п. процессы на удаленных компутерах, работать с удаленным реестром и т.д.?
Автор: idiMAN
Дата сообщения: 17.11.2006 13:36
А как заставить PowerShell понимать русские буквы?
Набираю например
PS> ipconfig | findstr "адрес"
а в ответ - пустая строка.
А если набрать
PS> ipconfig | findstr "IP"
то вместо русских букв выдаются вопросики.
Автор: WRFan
Дата сообщения: 18.11.2006 01:14

Цитата:
релиз Windows PowerShell 1.0
Интересно, будет ли она быстрее запускаться, а то тормоза...


мда, надежда не оправдалась, медленная, собака, по сравнению с обычным cmd промптом
Автор: Etalon
Дата сообщения: 18.11.2006 10:09
Скачать PowerShell Analizer (Beta 3) 1.0.1.4
Автор: KapralBel
Дата сообщения: 28.11.2006 15:25
WRFan
Почему же медленная - работает почти так же шустро

Может быть это поможет
Если вы "разгоняли" RC1 ngen-ом, то деинсталляция не удаляет старье из native кэша. Поэтому после деинсталляции RC1 не помешает разок для очистки запустить:


Код: cd ([Runtime.InteropServices.RuntimeEnvironment]::GetRuntimeDirectory())
.\ngen.exe update
Автор: LexusSad
Дата сообщения: 10.12.2006 11:27
Мне тут сказали, что PS под Win2K server sp4 не устанавливаться, правда ли это и что можно сделать, чтобы он все таки заработал???
Автор: KapralBel
Дата сообщения: 12.12.2006 10:21
LexusSad
На сайте лежат версии под
Win2003 SP1
WinXP SP2
Так, что скорее всего только переустанавливать ось
Автор: e0ne
Дата сообщения: 14.12.2006 23:48
На моем комне PS как-то медленно работает.... Это мне так "повезло" или я не одинок со своей проблемой?
Автор: LexusSad
Дата сообщения: 15.12.2006 07:14
KapralBel
Спасибо за подтверждение этой неутешительной новости, но вроде как мне повезло и народ созрел на Win2k3...

e0ne
Мое впечателние от скорости работы PS:
- первый запуск после входа в систему действительно не скорый (мягко говоря)
- последующие запуски и сама работа претензий по скорости (по крайней мере) не вызывает
Автор: KapralBel
Дата сообщения: 15.12.2006 08:50
e0ne
А что ты понимаешь под медленно работает???
У меня все тип-топ
Выполни мой совет на этой=же странице про ngen

Кстати начал переводить все свои задачи по управлению сеткой - на PowerShell - шикарно

Страницы: 123456789101112131415161718192021222324

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


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