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

» PowerShell

Автор: 01MDM
Дата сообщения: 04.08.2007 11:45
Как определить в переменную дату установки системы?
Пробовал так:

Код:
$ins=Get-Wmiobject win32_OperatingSystem -Property InstallDate | findstr "InstallDate"
Write-Host $ins
Автор: KapralBel
Дата сообщения: 04.08.2007 12:34
01MDM

Код: $ins = (Get-Wmiobject win32_OperatingSystem).InstallDate
$dtYear = $ins.SubString(0,4)
$dtMonth = $ins.SubString(4,2)
$dtDay = $ins.SubString(6,2)
$dtHour = $ins.SubString(8,2)
$dtMin = $ins.SubString(10,2)
$dtIns = Get-Date -Year $dtYear -Month $dtMonth -Day $dtDay -Hour $dtHour -Minute $dtMin
"дата установки системы:"+$dtIns.DateTime
Автор: 01MDM
Дата сообщения: 04.08.2007 12:41
KapralBel

Большое спасибо, буду изучать код.
Автор: KapralBel
Дата сообщения: 04.08.2007 12:58
Скрипт (версия 4.0) пересылающий по электронной почте все ошибки и предупреждения попавшие в журнал событий, за указанный интервал времени или с момента последнего запуска
[more=get-EventLogEW.ps1]

Код: # v4.0
# =====================
# ==================== Константы - начало
# =====================
# Частота вызова скрипта
# $Interval - частота вызова в единицах, заданных в $IntervalSelector
# $IntervalSelector - временной интервал
# h - часы
# n - минуты
# d - дни (default)
# m - месяцы
$strComputerName = $Env:ComputerName

$iInterval = 1
$strIntervalSelector = 'd'
$bLastTime = $True

$strEMailDomain = 'Firma.Com'
$strEMailTo = 'Administrator@' + $strEMailDomain
$strEMailFrom = '@EventLog.' + $strEMailDomain
$strSMTPHost = 'SMTP.' + $strEMailDomain
$strEMailFrom = $strComputerName + $strEMailFrom
$iSMTPPort = 25

$strDateFormat = 'dd/MM/yy, HH:mm'

#$UTF8 = New-Object System.Text.UTF8Encoding
$cdrUTF8 = [System.Text.Encoding]::UTF8
$eletError = [System.Diagnostics.EventLogEntryType]::Error
$eletInfo = [System.Diagnostics.EventLogEntryType]::Information
$eletWarn = [System.Diagnostics.EventLogEntryType]::Warning
$eletSA = [System.Diagnostics.EventLogEntryType]::SuccessAudit
# =====================
# ==================== Константы - конец
# =====================

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=$False }
If ($Args[$i] -imatch '[?]')
{
Write-Color '
<TDarkRed_>Выборка из журнала событий ошибок и предупреждений (v4.0)

<TYellow_>Get-EventLogEW <TWhite_>[-DateTime] | [-Time <N>] [-S <interval>] [-?|/?]
<TBlue_>где:
<TMagenta_>-?/? <TWhite_> - вызов данной справки
<TMagenta_>-DateTime <TWhite_> - Анализ журнала событий не от времени последнего запуска скрипта
А за явно указанный промежуток времени
По умолчанию в скрипте прописаны последние сутки
см. ключи <TYellow_>-Time <TWhite_>и <TYellow_>-S
<TMagenta_>-Time <TCyan_><N><TWhite_> - Указывает сколько времени анализировать (по умолчанию 1)
<TMagenta_>-S <TCyan_><str><TWhite_> - Указывает в каких временных единицах считать интервал
По умолчанию <TYellow_>d<TWhite_> - дни
Может принимать значения:
<TYellow_>h<TWhite_> - часы
<TYellow_>n<TWhite_> - минуты
<TYellow_>d<TWhite_> - дни (по умолчанию)
<TYellow_>m<TWhite_> - Месяцы
Ключи <TYellow_>-Time,-S<TWhite_> без ключа <TYellow>-DateTime<TWhite_> - не играют роли
вместе с ним могут использоваться по раздельности
Ключ <TYellow_>-DateTime<TWhite_> без ключей <TYellow_>-Time,-S<TWhite_> берет интервал в 1 сутки
Исключение составляет первый запуск скрипта - в этом случае
всегда используется интервал либо явно прописанный в командной строке,
либо по умолчанию'
Exit
}
}

$Tmp = Get-Item hklm:\software\PowerShellScript\Get-EventLogEW -Force -ErrorAction SilentlyContinue
$TmpCnt = ($Tmp | Get-Member -ErrorAction SilentlyContinue).Count+0

If ($TmpCnt -eq 0)
{
$tmp=New-Item -Path HKLM:\SOFTWARE\PowerShellScript\Get-EventLogEW -Force -ErrorAction SilentlyContinue
}

$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)
}

$rgKeyPr = Get-ItemProperty -Path HKLM:\SOFTWARE\PowerShellScript\Get-EventLogEW -Name Date -ErrorAction SilentlyContinue
$rgKeyPrCnt = ($rgKeyPr | Get-Member -ErrorAction SilentlyContinue).Count+0

If ($rgKeyprCnt -eq 0)
{
Set-ItemProperty -Path HKLM:\SOFTWARE\PowerShellScript\Get-EventLogEW -Name Date $dtPrev
}

if ($bLastTime -eq $True)
{
$strTmp=(New-Object -ComObject WScript.Shell).RegRead('HKLM\SOFTWARE\PowerShellScript\Get-EventLogEW\Date')
$dtPrev = Get-Date -Date $strTmp
$dtPrev=$dtPrev.AddMinutes(-2)
}
Set-ItemProperty -Path HKLM:\SOFTWARE\PowerShellScript\Get-EventLogEW -Name Date $dtNow.ToString('dd/MM/yyyy HH:mm:ss') -Force -ErrorAction SilentlyContinue

$objEventLogs=Get-EventLog -List
$iCountErrTotal=0
For($i=0;$i -lt $objEventLogs.Count;$i++)
{
$objEventLog = $objEventLogs.Get($i)
$objEventLogMessages = Get-EventLog $objEventLog.Log
$objEventLogMessages = $objEventLogMessages | Where-Object {$_.TimeWritten -le $dtNow -and $_.TimeWritten -ge $dtPrev}
$objEventLogMessages = $objEventLogMessages | Where-Object {$_.EntryType -ne $eletInfo -and $_.EntryType -ne $eletSA}
$iCountErrCurrentEventLog = 0
$strBodyText = ''
$iCountErrCurrentEventLog += $objEventLogMessages.Count
$iCountErrTotal += $objEventLogMessages.Count
For($j=0;$j -lt $objEventLogMessages.Count;$j++)
{
$objEventLogMessage = $objEventLogMessages[$j]
$objEventLogMessage.EntryType
If ($objEventLogMessage.EntryType -eq $eletInfo) {'Info'} Else {'No info'}
If ($j -eq 0)
{
$strBodyText = $strBodyText+('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">')
$strBodyText = $strBodyText+('<html>')
$strBodyText = $strBodyText+('<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />')
$strBodyText = $strBodyText+('<head><title>'+$strMsg+'</title>')
$strBodyText = $strBodyText+('</head>')
$strBodyText = $strBodyText+('<h2 align="center">'+$strHeaderHTML+'</h2>')
$strBodyText = $strBodyText+('<table width="100%" border="1" cellspacing="2" cellpadding="2" align="center">')
$strBodyText = $strBodyText+('<tr><th>№</th><th>Тип</th><th>Дата</th><th>Время</th><th>Комп</th><th>Пользователь</th><th>Сообщение</th></tr>')
}
$strMsg = 'Журнал ['+$objEventLog.LogDisplayName+'] за период ['+$dtPrev.ToString($strDateFormat)+" .. "+$dtNow.ToString($strDateFormat)+']'
$strHeaderHTML = 'Журнал ['+$objEventLog.LogDisplayName+']<br>за период ['+$dtPrev.ToString($strDateFormat)+" .. "+$dtNow.ToString($strDateFormat)+']'
$strBodyText = $strBodyText+('<tr align="left">')
$strBodyText = $strBodyText+('<td>'+$j+'</td>')
$strBodyText = $strBodyText+('<td>'+$objEventLogMessage.get_EntryType().ToString()+'<br>'+$objEventLogMessage.Source+"<br>"+$objEventLogMessage.EventID+'</td>')
$strBodyText = $strBodyText+('<td>'+$objEventLogMessage.TimeWritten.ToString('dd/MM/yyyy')+'</td>')
$strBodyText = $strBodyText+('<td>'+$objEventLogMessage.TimeWritten.ToString('HH:mm:ss')+'</td>')
$strBodyText = $strBodyText+('<td>'+$objEventLogMessage.MachineName+'&nbsp;</td>')
$strBodyText = $strBodyText+('<td>'+$objEventLogMessage.UserName+'&nbsp;</td>')
$strBodyText = $strBodyText+('<td>'+$objEventLogMessage.Message+'</td>')
$strBodyText = $strBodyText+('</tr>')
}
If ($iCountErrCurrentEventLog -gt 0)
{
$strBodyText = $strBodyText+('</table>')
$strBodyText = $strBodyText+('</body>')
$strBodyText = $strBodyText+('</html>')
$SMTPClient = new-object System.Net.Mail.SMTPClient
$Msg = new-object System.Net.Mail.MailMessage
$Msg.From = $strEMailFrom
$Msg.Subject = $strComputerName+': '+$strMsg
$Msg.IsBodyHTML = 1
$Msg.BodyEncoding = $cdrUTF8
$Msg.Body = $strBodyText
$SMTPClient.Host = $strSMTPHost
$SMTPClient.Port = $iSMTPPort
$Msg.To.Add($strEMailTo)
$SMTPClient.Send($Msg)
}
}

If ($iCountErrTotal -eq 0)
{
$strMsg = $strComputerName+': За период ['+$dtPrev.ToString($strDateFormat)+" .. "+$dtNow.ToString($strDateFormat)+'] ошибок и предупреждений в журнале событий нет'
$SMTPClient = new-object System.Net.Mail.SMTPClient
$Msg = new-object System.Net.Mail.MailMessage
$Msg.From = $strEMailFrom
$Msg.Subject = $strMsg
$Msg.Body = $strMsg
$SMTPClient.Host = $strSMTPHost
$SMTPClient.Port = $iSMTPPort
$Msg.To.Add($strEMailTo)
$SMTPClient.Send($Msg)
}
Автор: 01MDM
Дата сообщения: 05.08.2007 19:37

Код:
get-location $env:desk
function prompt
{
$host.ui.rawui.WindowTitle = $(get-location)
$random = new-object random
$color=[System.ConsoleColor]$random.next(10,10)
Write-Host ("#:") -nonewline -foregroundcolor $color
return " "
}
Автор: KapralBel
Дата сообщения: 05.08.2007 19:51
01MDM
Тебе надо названия цветов ставить в рандом?
названия срабатываю только в Write-host

А если так хочется то помести в profile.ps1
$Black=1
...
$White=16

Добавлено:
Можно еще так
$color=[System.ConsoleColor]::Red
Автор: 01MDM
Дата сообщения: 05.08.2007 20:09

Цитата:
Тебе надо названия цветов ставить в рандом?

Нет, я хотел избавиться от $random вообще. Просто $random.next(10,10) "кривой" путь, чтобы вывести два знака зеленого цвета.

Цитата:
$color=[System.ConsoleColor]::Green

Сработало!


Автор: 01MDM
Дата сообщения: 09.08.2007 10:51
Небольшая программка для чтения помощи командлетов и справок about_*
http://www.codeplex.com/ShinyPower
Автор: Der Meister
Дата сообщения: 22.08.2007 13:30
PowerShell TabExpansion extension
Автор: RiNeo
Дата сообщения: 01.09.2007 23:55
По этому адресу обитает програмулина для удаленного использования PowerShell. Правда еще бета .
Автор: Etalon
Дата сообщения: 04.09.2007 15:18
RiNeo
Честно говоря не совсем понятна потребность в такой программе.
Автор: Der Meister
Дата сообщения: 05.09.2007 20:28
PowerTab Version 0.98 Released

Цитата:

New Features :
* Inline Search works also for types now !

Автор: Etalon
Дата сообщения: 26.09.2007 11:01
Товарисчи подскажите пожалуйста, как на PowerSell реализовать такую вот конструкцию?

Код:
Set objSysInfo = CreateObject("ADSystemInfo")
strComputer = objSysInfo.ComputerName
Set objComputer = GetObject("LDAP://" & strComputer)
Автор: Etalon
Дата сообщения: 03.10.2007 16:11
Нашёл решение

Код:
$ADSystemInfo = new-object -COM ADSystemInfo

$ComputerName = [System.__ComObject].InvokeMember("ComputerName",[System.Reflection.BindingFlags]::GetProperty,$null,$ADSystemInfo,$null)

$Computer = [ADSI]("LDAP://" + $ComputerName)
Автор: Der Meister
Дата сообщения: 08.10.2007 20:36
PowerGUI is an extensible graphical administrative console for managing systems based on Windows PowerShell. These include Windows OS (XP, 2003, Vista), Exchange 2007, Operations Manager 2007 and other new systems from Microsoft. The tool allows to use the rich capabilities of Windows PowerShell in a familiar and intuitive GUI console.
Since build 1.0.11 with script editor.

The editor has all you would expect:
-Syntax highlight,
-Intellisense for PowerShell cmdlets and cmdlet parameters,
-Tooltips with syntax information,
-Matching brackets, search/replace, regions,
-Ability to export, run, print, etc.

And more importantly we tried to do our best to add these goodies without sacrificing the advantages of the main PowerShell editor on the market today - Windows Notepad. The script editor:
-Is absolutely free (installs as one of the features of PowerGUI), and
-Is very lightweight and fast.
Автор: KLASS
Дата сообщения: 03.11.2007 22:02
Бесплатная книга по сабжу (ENG), необходима регистрация в Windows Live или Microsoft Passport Network
Автор: varant
Дата сообщения: 04.11.2007 09:52
Прикольно, мне на днях письмо пришло от Microsoft Power Shell и наклейка
Автор: z3r
Дата сообщения: 04.11.2007 14:00
можно линк на 64 бита версию для висты?
Автор: Etalon
Дата сообщения: 06.11.2007 09:29
z3r
PowerShell для Windows Vista x64 Английский
PowerShell для Windows Vista x64 Русский
Автор: Etalon
Дата сообщения: 06.11.2007 17:25
Скачать... Windows PowerShell 2.0 Community Technology Preview (CTP)
Предварительно необходимо установить WS-Management v1.1
Автор: Der Meister
Дата сообщения: 20.11.2007 20:44
Released PowerGUI version 1.0.12 with PowerShell debugger built into the script editor.
So now not only can you edit the scripts but also debug them, set breakpoints, go step-by-step, see the values of the variables, and much more:


Автор: Etalon
Дата сообщения: 23.11.2007 17:48
01MDM

Цитата:
например, найти System.ConsoleColor

http://msdn2.microsoft.com/en-us/library/system.consolecolor(VS.90).aspx
Автор: 01MDM
Дата сообщения: 23.11.2007 18:01
Etalon
Спасибо, мне просто было непонятно откуда берутся все эти классы (например System.ConsoleColor).
Автор: PnemPen
Дата сообщения: 04.12.2007 17:37
Как я понял, на удаленном компьютере скрипт выполнится, если пользователь, от чьего имени он выполняется, одладает на этом компьютере какими-нибудь правами. А если это не так - есть возможность выполнить его от имени произвольно заданного пользователя, локального администратора, например?
Автор: TCPIP
Дата сообщения: 09.12.2007 04:20
PnemPen
Насколько я понимаю, сценарий выполнится для любой учетной записи, входящей в группу built-in Administrator базы SAM локального компьютера. Поправьте пожалуйста, если я не прав.
Автор: nepost
Дата сообщения: 07.04.2008 09:56
Что-то я не пойму, в чем дело, но ситуация в следующем:
простейший скрипт 1.ps1 :
get-addresslist | update-addresslist

Запускаю его из консоли PS
Результат - выполнение

Запускаю из CMD (ассоциации настроены) - результат такой:

C:\WINDOWS>powershell -Command C:\1.ps1
Условие "get-addresslist" не распознано как командлет, функция, выполняемая про
грамма или файл сценария. Проверьте условие и повторите попытку.
В C:\1.ps1:1 знак:16
+ get-addresslist <<<< | update-addresslist

В чём может быть дело?
Автор: 01MDM
Дата сообщения: 07.04.2008 10:15
nepost

Что показывает:

Код:
Get-Command get-addresslist
или
Get-ChildItem function:\get-addresslist
Автор: nepost
Дата сообщения: 07.04.2008 11:02
Это из Exchanger 2007
[PS] C:\>get-command get-addresslist

CommandType Name Definition
----------- ---- ----------
Cmdlet Get-AddressList Get-AddressList [[-Identity]...
Автор: 01MDM
Дата сообщения: 07.04.2008 11:21
nepost

Не понял суть вопроса сразу. Не знаю, у меня

powershell -command test.ps1

нормально запускается из cmd
Автор: nepost
Дата сообщения: 07.04.2008 13:46
У меня напрямую из PS нормально, а из cmd говорит, что "не распознано как командлет, функция, выполняемая программа или файл сценария"
Непонятно

Страницы: 123456789101112131415161718192021222324

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


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