Разделы презентаций


Windows POwerShell

Содержание

PowerShell – что за зверь такой?

Слайды и текст этой презентации

Слайд 1Windows POwerShell

Windows POwerShell

Слайд 2PowerShell – что за зверь такой?

PowerShell – что за зверь такой?

Слайд 3Плюсы PowerShell с точки зрения системного администратора
Ускоряет автоматизирование типичных задач

системного администратора
Прост и интуитивно понятен
Единый интерфейс к множеству рычагов управления,

позволяющий легко связывать их воедино
Привычные утилиты командной строки
WMI, ADSI, COM
Новый рычаг - .Net
И многое другое…
Плюсы PowerShell с точки зрения системного администратораУскоряет автоматизирование типичных задач системного администратораПрост и интуитивно понятенЕдиный интерфейс к

Слайд 4Плюсы PowerShell с точки зрения системного администратора
Один язык для интерактивной

работы, разработки скриптов и их отладки
Прост в изучении
Руководство пользователя и

встроенная справка на русском языке
Доступно множество полезных книг
Большинство элементов языка вам уже знакомы
Новые вещи изучаются интерактивно
Знания полученные во время изучения одного компонента легко применимы к другим
Время потраченное на обучение не пропадет зря
Создан специально для системных администраторов.
Доступно множество дополнительных компонентов от сторонних разработчиков
Плюсы PowerShell с точки зрения системного администратораОдин язык для интерактивной работы, разработки скриптов и их отладкиПрост в

Слайд 5PowerGUI
GUI хост для PowerShell
Позволяет работать с PowerShell не зная его
Легко

расширяемый с помощью несложных скриптов
Превосходный редактор с подсветкой и автоматическим

завершением кода и встроенным отладчиком
Возможность выполнить действие с помощью графического интерфейса, а затем посмотреть соответствующий код PowerShell
Доступна русификация

PowerGUIGUI хост для PowerShellПозволяет работать с PowerShell не зная егоЛегко расширяемый с помощью несложных скриптовПревосходный редактор с

Слайд 6PowerGUI

PowerGUI

Слайд 7PowerGUI

PowerGUI

Слайд 8Quest Software AD Cmdlets
Инструменты для облегчения работы с Active Directory

из командной строки.





Бесплатен, прекрасная поддержка.
http://www.quest.com/activeroles-server/arms.aspx

$u = Get-QADUser dsotnikov $u.TsProfilePath = 'c:\profile' $u.CommitChanges()
Import-Csv

users.csv | New-QADUser -ParentContainer mydomain.local/test
Quest Software AD CmdletsИнструменты для облегчения работы с Active Directory из командной строки.Бесплатен, прекрасная поддержка.http://www.quest.com/activeroles-server/arms.aspx$u = Get-QADUser

Слайд 9/\/\o\/\/’s PowerTab
Дополняет:
Командлеты и их параметры
Классы WMI
Классы, методы, конструкторы, перечисления .Net


Свойства объектов
Каталоги, файлы, ключи реестра(и другие объекты текущего PSDrive)
Имена исполняемых

файлов из $env:path
Имена скриптов .PS1 и их параметры
Имена компьютеров и общих папок
Преобразовывает псевдонимы в команды
Имена и параметры пользовательских функций
Имена переменных
Настраиваемые пользователем элементы
Многое другое…



/\/\o\/\/’s PowerTabДополняет:Командлеты и их параметрыКлассы WMIКлассы, методы, конструкторы, перечисления .Net Свойства объектовКаталоги, файлы, ключи реестра(и другие объекты

Слайд 10/\/\o\/\/’s PowerTab
Список вариантов с помощью псевдографики:
позволяет уточнять запрос после

вызова меню донабирая текст вручную или курсорными клавишами.
База настроек в

XML файле, для сохранения пользовательских параметров и оптимизации.
Цветовые темы
Бесплатен
Написан на PowerShell
Скачивать тут - http://thepowershellguy.com/blogs/posh/pages/powertab.aspx
Скринкаст с демонстрацией установки и использования – http://xaegr.wordpress.com/2008/02/04/powertab-screencast/



/\/\o\/\/’s PowerTabСписок вариантов с помощью псевдографики: позволяет уточнять запрос после вызова меню донабирая текст вручную или курсорными

Слайд 11/\/\o\/\/’s PowerTab

/\/\o\/\/’s PowerTab

Слайд 12/\/\o\/\/’s PowerTab

/\/\o\/\/’s PowerTab

Слайд 13PowerShell Community Extensions
Новые командлеты и функции:
Get/Set/Out-Clipboard
*-Bitmap
New-Hardlink
New-Junction
New-Shortcut
Get-Hash
Ping-Host; Resolve-Host
Get/Stop/Disconnect-TerminalSession
Write-Zip; Write-BZip; Write-GZip
Elevate
И еще

множество других…
PSDrive провайдеры
Feed storage
Active Directory

PowerShell Community ExtensionsНовые командлеты и функции:Get/Set/Out-Clipboard*-BitmapNew-HardlinkNew-JunctionNew-ShortcutGet-HashPing-Host; Resolve-HostGet/Stop/Disconnect-TerminalSessionWrite-Zip; Write-BZip; Write-GZipElevateИ еще множество других…PSDrive провайдерыFeed storageActive Directory

Слайд 14Get-IsaArray.ps1 Скрипт для подключения к COM объекту ISA
param ([string]$Name="*")
$Root = New-Object

-comObject "FPC.Root"
if( $root.Arrays.Count -gt 0)
{
$root.Arrays|?{$_ -like $name}
}
else
{
if ($name -eq "*")
{
$name

= read-host "Enter name of the ISA array"
}
$root.Arrays.Connect($name)
}

Get-IsaArray.ps1 Скрипт для подключения к COM объекту ISAparam ([string]$Name=

Слайд 15Просмотр и изменение портов SSL соединений
# Подключаемся к com-объекту
$isa =

.\Get-IsaArray.ps1

# Смотрим какие диапазоны портов уже разрешены
$isa.ArrayPolicy.WebProxy.TunnelPortRanges

# Добавляем диапазон портов
$isa.ArrayPolicy.WebProxy.TunnelPortRanges.AddRange(
"SSL

1234", 1234, 1234)

# Удаляем диапазон
$isa.ArrayPolicy.WebProxy.TunnelPortRanges.Remove("SSL 1234")

# Применяем изменения
$isa.ApplyChanges()

Просмотр и изменение портов SSL соединений# Подключаемся к com-объекту$isa = .\Get-IsaArray.ps1# Смотрим какие диапазоны портов уже разрешены$isa.ArrayPolicy.WebProxy.TunnelPortRanges#

Слайд 16Экспорт настроек ISA
# Подключаемся к com-объекту
$isa = .\Get-IsaArray.ps1

# Записываем текущую

дату в нужном формате в переменную
$date = Get-Date -Format "yyyy-MM-dd"

#

Экспортируем настройки политик
$ISA.ArrayPolicy.ExportToFile(
"c:\logs\ISA-Policy-$date.xml",0,"", "Exported at $date")

Экспорт настроек ISA# Подключаемся к com-объекту$isa = .\Get-IsaArray.ps1# Записываем текущую дату в нужном формате в переменную$date =

Слайд 17Отчет по правилам ISA
# Подключаемся к com-объекту
$isa = .\Get-IsaArray.ps1

# Записываем

текущую дату в нужном формате в переменную
$date = Get-Date -Format

"yyyy-MM-dd"

# Получаем политики, выбираем пользовательские, форматируем и сохраняем
$ISA.ArrayPolicy.PolicyRules | where {-not $_.System} |
select Order, Name, Enabled,
@{Name="Type"; Expression={
switch($_.type){
0 {"Access"};
1 {"Publishing"};
2 {"Web Publishing"}
}
}},
@{Name="Action"; Expression={
if($_.action -eq 0){"Allow"}else{"Deny"}
},
EnableLogging, Description |
ConvertTo-HTML | Set-Content "c:\reports\Report-$date.html"
Send-SmtpMail -To "CIO@domain.ru" -Subject "SPAM" –AttachmentPath "c:\reports\Report-$date.html"
Отчет по правилам ISA# Подключаемся к com-объекту$isa = .\Get-IsaArray.ps1# Записываем текущую дату в нужном формате в переменную$date

Слайд 18Get-PortState.ps1 Смотрим какие порты открыты снаружи на межсетевом экране.
param ([int[]]$ports=@(25,80,443))

$wc

= new-object System.Net.WebClient

foreach ($port in $ports)
{
$url = "http://www.utorrent.com/testport.php?port=$port"
$ret = $wc.DownloadString($url)
new-object

psobject | select @{N="Port"; E={$port}},
@{N="State"; E={$ret -match "port $port is open"}}
}
Get-PortState.ps1 Смотрим какие порты открыты снаружи на межсетевом экране. param ([int[]]$ports=@(25,80,443))$wc = new-object System.Net.WebClientforeach ($port in $ports){	$url

Слайд 19.Net Пусть программисты завидуют
# Смотрим процессы на другом компьютере
[System.Diagnostics.Process]::GetProcesses("PC01")

# Отправляем

почту
$smtp = New-Object System.Net.Mail.SmtpClient
$smtp.Host = "localhost"
$smtpclient.Send("from@domain.ru","to@domain.ru","Тема",
"Текст сообщения")

# Декодируем URI строку
$string

= "%D0%9F%D0%BE%D0%B2%D0%B5%D1%80%D0%A8%D0%B5%D0%BB%D0%BB«
[System.Uri]::UnescapeDataString($string)

# Получаем произвольное число
$rnd = New-Object random
$rnd.Next(1,100)

# Функция Out-Notepad
function Out-Notepad {
$file = [System.IO.Path]::GetTempFileName()
$input | Out-String | Set-Content $file
notepad.exe $file }



.Net  Пусть программисты завидуют# Смотрим процессы на другом компьютере[System.Diagnostics.Process]::GetProcesses(

Слайд 20WMI Не хуже других объектов
# Список общих папок
Get-WmiObject Win32_Share -ComputerName

"PC02"

# Смена метки диска
$disk = Get-WmiObject Win32_LogicalDisk |
where {$_.deviceId

-eq "C:"}
$disk.VolumeName = "Main"
$disk.Put()

# Запускаем процесс на другом компьютере
$proc = [wmiClass]"\\PC02\ROOT\CIMV2:win32_process"
$proc.create("Calc")

# Список установленного ПО
Get-WmiObject Win32_Product | sort vendor | format-table name, vendor, version

# Планки памяти
Get-WmiObject Win32_MemoryDevice |
Format-Table DeviceId,
@{label="Size"; expression={$_.EndingAddress - $_.startingAddress}}

# Топ 10 засорителей почтовых ящиков Exchange 2003
Get-WmiObject -Class Exchange_Mailbox -Namespace ROOT\MicrosoftExchangev2 |
sort size -Descending | select -first 10 |
Format-Table *DisplayName, Size, TotalItems
WMI  Не хуже других объектов# Список общих папокGet-WmiObject Win32_Share -ComputerName

Слайд 21Разные полезные мелочи
# Быстрая выборка параметров
${function:...}={process {$Object=$_; $args[0]|%{$Object.($_)}}}
Get-Process powershell |

... Id
dir p* | ... Fullname

# Быстрый For
1..10 | foreach

{"Число $_"}
Get-Content .\computers.txt | foreach { ping.exe $_ -n 1 | Select-String "Ответ" }

# Регулярные выражения
Get-Content ftp.log |
where {$_ -match "^(\S+) .+USER (\S+)"} |
foreach {"Юзер $($matches[2]) зашел на FTP в $($matches[1])"
Разные полезные мелочи# Быстрая выборка параметров${function:...}={process {$Object=$_; $args[0]|%{$Object.($_)}}}Get-Process powershell | ... Iddir p* | ... Fullname# Быстрый

Слайд 22Сравнение powershell и VBS

Сравнение powershell и VBS

Слайд 23set objNamedArgs=Wscript.Arguments.Named

path=objNamedArgs.item("path")
killdate=date() - objNamedArgs.item("killdate")
recur=objNamedArgs.item("recur")
wscript.echo path, killdate, recur
arFiles = Array()


set fso = createobject("scripting.filesystemobject")

'Ничего не удаляем, пока пробегаем по

возвращенному набору файлов.
'Набор может быть перемешан.
'Создаём массив файловых объектов, чтобы этого избежать

SelectFiles path, killdate, arFiles, recur

nDeleted = 0
for n = 0 to ubound(arFiles)

on error resume next 'in case of 'in use' files...
arFiles(n).delete true
if err.number = 0 then
nDeleted = nDeleted + 1

end if
on error goto 0
next

VBS: Удаление файлов, созданных до заданной даты

Serv-IV, http://forums.microsoft.com/TechNet-RU/ShowPost.aspx?PostID=1686126&SiteID=40

set objNamedArgs=Wscript.Arguments.Named path=objNamedArgs.item(

Слайд 24sub SelectFiles(sPath,vKillDate,arFilesToKill,bIncludeSubFolders)
on error resume next
' добавляем файлы на

удаление в массив

set folder = fso.getfolder(sPath)
set files =

folder.files
for each file in files
' на всякий случай отслеживаем ошибки доступа к
' свойству Date
'
dtlastmodified = null
on error resume Next
dtlastmodified = file.datelastmodified
on error goto 0
if not isnull(dtlastmodified) Then
if dtlastmodified < vKillDate then
count = ubound(arFilesToKill) + 1
redim preserve arFilesToKill(count)
set arFilesToKill(count) = file
end if
end if
next

if bIncludeSubFolders then
for each fldr in folder.subfolders
SelectFiles fldr.path,vKillDate,arFilesToKill,true
next
end if
end sub

VBS: Удаление файлов, созданных до заданной даты

Serv-IV, http://forums.microsoft.com/TechNet-RU/ShowPost.aspx?PostID=1686126&SiteID=40

sub SelectFiles(sPath,vKillDate,arFilesToKill,bIncludeSubFolders) on error resume next ' добавляем файлы на удаление в массив set folder = fso.getfolder(sPath)

Слайд 25# Получаем текущую дату
$DateX = Get-Date
# “Прибавляем” к ней минус

7 дней
$DateX = $DateX.AddDays(-7)

# Получаем список файлов в каталоге
Dir –Recurse

|
# Выбираем те где дата создания меньше $dateX
where {$_.LastWriteTime –lt $DateX} |
# Будто бы удаляем отобранные файлы
Del –Whatif

Powershell: Удаление файлов, созданных до заданной даты

# Получаем текущую дату$DateX = Get-Date# “Прибавляем” к ней минус 7 дней$DateX = $DateX.AddDays(-7)# Получаем список файлов

Слайд 26On error Resume Next
Const ForReading = 1, ForWriting =

2, ForAppending = 8
'******************************************
strComputer = "193.125.10.5"
strUser =

"Andy_user"
strPassword = "PASSWORD"
strDomain = ""
'******************************************
Err.Clear
'--- Подключаемся ---
Set objSWbemLocator = CreateObject ("WbemScripting.SWbemLocator")
If (Err.Number <> 0) Then
WScript.Echo "Error (objSWbemLocator) : " & Err.Number & " " & Err.Description
WScript.Quit
End If
Err.Clear
Set objSWbemServices = objSWbemLocator.ConnectServer ( _
strComputer, _
"root\cimv2", _
strUser, _
strPassword, _
"MS_409", _
"ntlmdomain:" & strDomain)

VBS: Информация об учетных записях пользователей на удаленном компьютере

© Andy_user, http://forum.sysadmins.ru/viewtopic.php?t=79925&start=0

On error Resume Next Const ForReading = 1, ForWriting = 2, ForAppending = 8 '****************************************** strComputer =

Слайд 27If (Err.Number 0) Then
WScript.Echo "Error (objSWbemServices)

: " & Err.Number & " " & Err.Description


WScript.Quit
End If
Err.Clear
Set file_object = CreateObject("Scripting.FileSystemObject")
Set list = file_object.OpenTextFile("./Rezult.log",ForWriting,True)
Set colAcc = objSWbemServices.ExecQuery ("Select * from Win32_UserAccount")
WScript.Echo "Обнаружено " & colAcc.Count & " учетных записей."
For Each ttt in colAcc
list.Write ttt.Caption & " " & vbCrLf
list.Write " " & "Caption : " & ttt.Caption & vbCrLf
list.Write " " & "Name : " & ttt.Name & vbCrLf
list.Write " " & "Description : " & ttt.Description & vbCrLf
list.Write " " & "Domain : " & ttt.Domain & vbCrLf
list.Write " " & "SID : " & ttt.SID & vbCrLf
list.Write " " & "SIDType : " & ttt.SIDType & vbCrLf
list.Write " " & "Disabled : " & ttt.Disabled & vbCrLf
list.Write " " & "Lockout : " & ttt.Lockout & vbCrLf
list.Write " " & "PasswordChangeable : " & ttt.PasswordChangeable & vbCrLf
list.Write " " & "PasswordExpires : " & ttt.PasswordExpires & vbCrLf
list.Write " " & "PasswordRequired : " & ttt.PasswordRequired & vbCrLf
list.Write " ------------------------------- " & vbCrLf
Next
list.Close

VBS: Информация об учетных записях пользователей на удаленном компьютере

© Andy_user, http://forum.sysadmins.ru/viewtopic.php?t=79925&start=0

If (Err.Number 0) Then  WScript.Echo

Слайд 28# Получаем учетные данные с другого компьютера, указав другие учетные

данные
$Accounts = Get-WmiObject -ComputerName scenic12 Win32_UserAccount -Credential (Get-Credential)

# Выводим количество

записей
"Обнаружено $($Accounts.Count) учетных записей"

# Выводим выбранные свойства в виде автоматически выровненной таблицы
$Accounts | Format-Table Caption, sid*, disabled,
lockout, password*, description –AutoSize

# Выводим то же самое в HTML файл
$Accounts | Select Caption, sid*, disabled,
lockout, password*, description |
ConvertTo-Html | Set-Content Accounts.html

Powershell: Информация об учетных записях пользователей на удаленном компьютере

# Получаем учетные данные с другого компьютера, указав другие учетные данные$Accounts = Get-WmiObject -ComputerName scenic12 Win32_UserAccount -Credential

Слайд 29var sDomain = ""; // enter your domain here.
var

iCutOffDays = 0; // last login cut-off in days.

var

TRUE = 1;
var ForReading = 1;
var ForWriting = 2;
var DAYMSECS = 86400000; // number of milliseconds in a day
var DomObj, CollObj, sSubDir;
var iNumUsers = 0;
var CutOff;

var WSHShell = new ActiveXObject("WScript.Shell");
var fs = new ActiveXObject("Scripting.FileSystemObject");

WSHShell.Popup("Starting Last Log Report " );

CutOff = new Date();
CutOff.setTime( CutOff.valueOf() - iCutOffDays*DAYMSECS );

DomObj = GetObject("WinNT://" + sDomain );
CollObj = new Enumerator(DomObj);

VBS: Список пользователей не входивших в домен X и более дней

© Paul Stuart, Paul.Stuart@schroders.com

var sDomain =

Слайд 30for ( ; !CollObj.atEnd(); CollObj.moveNext())
{
var Obj = CollObj.item();


if ( Obj.Class == "User" )
{
iNumUsers++;
try
{


if ( Obj.LastLogin < CutOff.valueOf() )
WriteLOG( Obj.name + " " + Obj.LastLogin );
}
catch( ErrorObj )
{
WriteLOG( Obj.name + " has never logged in" );
}
}
}

WriteLOG("Total number of users is " + iNumUsers );

WSHShell.Popup("Finished");
WScript.Quit();

VBS: Список пользователей не входивших в домен X и более дней

© Paul Stuart, Paul.Stuart@schroders.com

for ( ; !CollObj.atEnd(); CollObj.moveNext()) { var Obj = CollObj.item(); if ( Obj.Class ==

Слайд 31//////////////////////////////////////////////////////////////////////////////////
// WriteLOG
//
var LogFile = new Object();

function

WriteLOG( sLogLine )
{
var d = new Date();

if

( LogFile == null )
{
LogFile = fs.OpenTextFile( ".\\Logfile.txt" , ForWriting, TRUE );
LogFile.WriteLine( sLogLine );
}
else
{
LogFile.WriteLine( sLogLine );
}
}

VBS: Список пользователей не входивших в домен X и более дней

© Paul Stuart, Paul.Stuart@schroders.com

////////////////////////////////////////////////////////////////////////////////// // WriteLOG // var LogFile = new Object(); function WriteLOG( sLogLine ) { var d =

Слайд 32# Получаем текущую дату
$DateX = Get-Date

# “Прибавляем” к ней минус

3 месяца
$DateX = $DateX.AddMonths(-3)

# Получаем объекты из AD с указанными

свойствами
Get-QADUser -IncludedProperties Name, LastLogon |
# Выбираем с lastlogon меньше $DateX
Where {$_.lastlogon -lt $DateX} |
# Будто бы удаляем отобранные учетки
Disable-QADUser -WhatIf

Powershell: Список пользователей не входивших в домен X и более дней

# Получаем текущую дату$DateX = Get-Date# “Прибавляем” к ней минус 3 месяца$DateX = $DateX.AddMonths(-3)# Получаем объекты из

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика