Авторизация



Теги сайта



0х0000007b 1c access control list acl activation active directory ad roles add route adexplorer apache authentication to zabbix bare metal recovery bg zsh bicycle books bruteforce c admin ccna centos centos packet change net adapter name chap chkrootkit chmod cisco clipboard cmd configuring cpu cores cron crontab csc cut cvsup cvsup-without-gui db dev null 2 1 dhcp dhcp reservation disable ipv6 diskpart dism dns domain naming master domain roles download download powershell enable routing on windows enabled end-system doc english english language esx eventlog exe file associations fail2ban fastest_cvsup fedora fg zsh formatdatabase freebsd fsmo get-aduser group policy management hardware https hyper-v idioms iis iperf iptables iscsi jobs ldap ldap аутентификация zabbix limit lingualeo linux malware posix mcitp mcsa mcse memory check microsoft mod_ssl mount mssql mysql mysql user password netcache network network config network diagram network document network load balance cluster network scripts nginx nlb num lock numlock openssl pap partition pdc permissions php pipeline pkg_version ports upgrade portupgrade posix powershell ppp puppet pwdlastset rdp reg add regedit registry remote enable restrictions reverse proxy rhel rid rope jumping bridge мост прыжок высота route add route freebsd router switch doc routing protocol rpm sc sc sdset sc sdshow schema scope script output secure web security seize role service permissions services set dns servers set ip address sftp shell script show variables sound scheme sounds speed ssh standard-supfile subinacl supfile switch switchport sync syncronization task sсheduler tempdb topology map transfer role tripplite monitoring tweaks unix user must change password at next logon utf8 vim vlan vmware w32tm web windows windows 2003 r2 windows 2008 r2 windows administrative share windows firewall windows server windows server 2012 windows server backup windows service permissions windows пингалка winre wsus xargs yum zabbix zabbix external check zabbix ldap authentication zsh автоматическое обновление портов freebsd автономные файлы активация английский язык ассоциации файлов windows база данных безопасность active directory буфер вело велосипед видео включение роутинга в windows внешняя проверка zabbix вредоносное программное обеспечение posix документация сети задание двумерного массива захват ролей dc звуки звуковая схема идиомы иероглифы киев кодировка командная строка конфигурация сети маршрутизация маршруты в freebsd маршруты в redhat linux область обновление портов ограничения windows основные команды отключение административных ресурсов пакеты centos перевод передача ролей dc перенос планировщик задач покатушки полет над днепром проблемы кодировки протокол путь развития в it разрешения служб windows регистрируем cmd скриптом недоступность хоста реестр резервирование ip скриптом роли домена русские символы синхронизация скачать скачать powershell скачать книгу скорость сети списки контроля доступа тарзанка твики фоновые процессы цикл mssql

Главная страница
Преобразование объекта в модифицированный объект с новыми свойствами Печать

Создание новых свойств (property) объектов необходимо для:

  • удобочитаемости
  • передачи по конвейеру (в случае, если принимающий командлет содержит иное имя свойства, чем вывод передающего командлета)

 

Преобразуем параметр "VM" объектов Process в параметр с новым именем "VirtualMemory(MB)" и выведем его в Мегабайтах, а также параметр "PM" в "PagedMemory(MB)" и тоже выведем в Мегабайтах.

# Без преобразования
PS C:\> Get-Process -Name 'powershell*' | Select-Object -Property Name,Id,VM,PM

Name                   Id         VM        PM
----                   --         --        --
powershell          14024 4294967295  60260352
powershell          15524 4294967295  69124096
powershell_ise       9572  778027008 165224448


# После преобразования
PS C:\> Get-Process -Name 'powershell*' | `
             Select-Object -Property `
                Name, `
                Id, `
                @{name='VirtualMemory(MB)';expression={'{0:N2}' –f ($PSItem.VM / 1MB) }}, `
                @{n='PagedMemory(MB)';e={'{0:N2}' –f ($_.PM / 1MB) }}

Name                   Id VirtualMemory(MB) PagedMemory(MB)
----                   -- ----------------- ---------------
powershell          14024 4 096,00          57,47          
powershell          15524 4 096,00          65,92          
powershell_ise       9572 741,98            157,57         

 

Преобразуем параметр "Name" объекта ADComputer в новый параметр с именем "ComputerName".

Допустим вы хотите выбрать из Active Directory список компьютеров и посмотреть запущенные процессы на них. В этом случае следующий командлет выдаст вам ошибку:

PS C:\> Get-ADComputer -Filter * | Get-Process   # This is the wrong example and it entails an error

Это потому, что вывод передающего командета Get-ADComputer выдаст нужное нам для передачи по конвейеру свойство с именем "Name". Ввод же через PipeLine для командлета Get-Process осуществляется через свойство с именем "ComputerName".
Т.е. нам нужно переименовать свойство передающего командлета в подходящее имя для принимающего командлета. Значение же исходного свойства в этот раз мы не меняем:

 

PS C:\> Get-ADComputer -Filter * | Select-Object @{n='ComputerName';e={$_.Name}} | Get-Process   # This is the correct instance
 
Интересные фичи кода в PowerShell Печать

В этой статье я буду записывать интересные/часто нужные способы работы с кодом. Приветствуются предложения, дополнения и исправления Smile

# >>> Избавляемся от двойных кавычек (Best Practice)
PS C:\> $string1 = 'someText'
PS C:\>
PS C:\> Write-Host "$string1 addedNewText" # Способ с использованием двойных кавычек
someText addedNewText
PS C:\> Write-Host ('{0} addedNewText' -f $string1) # Способ с использованием одинарных кавычек
someText addedNewText

# >>> Проверить, содержит ли что-либо строковая переменная someString (Best Practice)
PS C:\> if ( -not [string]::IsNullOrEmpty($someString) ) { $true } else { $false }

# >>> Найти ближайший глобальный каталог Active Directory для его дальнейшего опроса
$LocalSite = (Get-ADDomainController -Discover).Site
$NewTargetGC = Get-ADDomainController -Discover -Service 6 -SiteName $LocalSite
if (!$NewTargetGC) { $NewTargetGC = Get-ADDomainController -Discover -Service 6 -NextClosestSite }
[string]$NewTargetGCHostName = $NewTargetGC.HostName.Value
[string]$LocalGC = ('{0}:3268' -f $NewTargetGCHostName) # AD Global Catalog записан в переменную
PS C:\> 
PS C:\> Get-ADGroup -Server $LocalGC -Filter {SamAccountName -eq 'someUniversalGroup'} # Для примера, найти универсальную группу someUniversalGroup в текущем лесе AD

# >>> Изменить пользователя, из под которого запускается сервис Windows
[string]$ServiceName = 'TeamCity-Agent-Service'
[string]$UserName = 'SomeServiceAccount'
[string]$UserPassword = 'Pa$$w0rd'

try
{
    $service = Get-WmiObject -Namespace 'root\CIMV2' -Class 'win32_service' | ?{$_.Name -eq $ServiceName}
            
    $changeStatus = $service.Change(
    $null,
    $null,
    $null,
    $null,
    $null,
    $null,
    $UserName,
    $UserPassword,
    $null,
    $null,
    $null)

    Write-Output ('Change status equals: {0}' -f $changeStatus.ReturnValue.ToString())

    $jobRestart = Start-Job -ScriptBlock { Restart-Service -Name ($service.Name) -WarningAction SilentlyContinue -Force }
    $jobRestart | Wait-Job
}
catch { Write-Error $_ }
finally { Remove-Variable service -ErrorAction SilentlyContinue}

# >>> Конвертировать multi string переменную в массив array, основываясь на новой строке new line
[string]$mass = @'
Line 1
Line 2
Line 3
Line 4
Line 5
'@

$mass.GetType()
<#

Вывод будет: 

IsPublic IsSerial Name   BaseType
-------- -------- ----   --------
True     True     String System.Object

#>

$mass.Count
<#

Вывод будет:
1

#>

[array]$mass = $mass -split '[\r\n]+'

Write-Host
Write-Host

$mass.GetType()
<#

Вывод будет: 

IsPublic IsSerial Name     BaseType
-------- -------- ----     --------
True     True     String[] System.Array

#>

$mass.Count
<#

Вывод будет:
5

#>


# >>> Выполнить команду на удаленных серверах по порядку, при чем имена серверов содержат нули в порядковом номере. Например есть Server01.domain.local, Server02.domain.local, Server03.domain.local и на них нужно выполнить команду gpupdate /force /target:computer

PS C:\> foreach ($n in 1..3) { Invoke-Command -ScriptBlock { Write-Host $env:COMPUTERNAME -ForegroundColor Yellow ; gpupdate /force /target:computer } -ComputerName ('Server{0:D2}.domain.local' -f $n) }
 
Основные команды управления сервисами в CentOS 7 Печать
systemctl list-unit-files --type service # отображает сервисы и состояние их запуска
systemctl list-units --type service --all # отображение текущего состояния сервисов
systemctl enable name.service # включение сервиса в автозапуск при старте системы
systemctl disable name.service # выключение сервиса в автозапуске
systemctl start name.service # запуск сервиса
systemctl stop name.service # остановка сервиса
systemctl restart name.service # перезапуск сервиса
systemctl try-restart name.service # перезапустить сервис если он был запущен
systemctl reload name.service # перечитать конфиги определенного сервиса
systemctl status name.service # отобразить состояние определенного сервиса
 
<< Первая < Предыдущая 1 2 3 4 5 6 7 8 9 10 Следующая > Последняя >>

Страница 1 из 62
Главная страница