Как создать контакты exchange почты из домена организации с помощью powershell.

add-pssnapin quest.activeroles.admanagement
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn
#Адрес контроллера домена, к которому подключаемся";
$Domain = 'namedomen.ru'
Connect-QADService -Service $Domain
#Получаем список пользователей удаленного домена   
$userlist = (Get-QADUser -name [А-Я]* -IncludedProperties DisplayName, title, company, department, mailNickname, Office, l, firstname, sn, PhoneNumber, Mobile, Email, physicalDeliveryOfficeName, AccountIsDisabled, msExchMailboxGuid -SizeLimit 0)
ForEach ($user in $userlist)
 {
 #Пользователь заблокирован?
 if ($user.AccountIsDisabled -eq $true) 
   {
  #У пользователя есть почта?
  if ($user.msExchMailboxGuid -notlike $NULL)   {
   #Пользователь заблокирован, удаляем существующий контакт
   Remove-MailContact $user.mail –Confirm:$false
   }
  }
 elseif ($(Get-contact $user.displayname))
  {
  if ($user.mail -notlike $NULL)
   {
   #Пользователь не заблокирован, контакт существует, надо обновить
   Set-Contact $user.email -Company "Имя компании" -Title $user.Title -Department $user.Department 
Читать далее

Как создать учётные записи с помощью powershell в AD из csv

Import-Csv -Path C:\1.csv -Encoding Default -Delimiter ";" | sort CN |
foreach-object{
#New-ADUser -Name $_.Full_Name -AccountPassword (ConvertTo-SecureString 'password!' -AsPlainText -force) -CannotChangePassword $True -Description $_.Desc -DisplayName $_.Full_Name -EmailAddress $_.Email -Enabled $False -GivenName $_.First_Name -HomeDirectory $_.Homedir -HomeDrive $Homedri -PasswordNeverExpires $True -Path $_.Path -SamAccountName $_.Email -ScriptPath LogonS.cmd -Surname $_.Last_Name -UserPrincipalName $_.Email -passthru
#Write-Host $_.SamAccountName
$filter="SamAccountName -eq '"+$_.SamAccountName+"'"
$usrexist=get-aduser -filter $filter
#Write-Host $_.SamAccountName
#Write-Host $_.SamAccountName
if ($usrexist -eq $null)
{
Write-Host "Username" $_.CN "not exists " $_.SamAccountName.Length
if ($_.SamAccountName.Length -gt 20 ) { $_.SamAccountName=$_.SamAccountName.Substring(0,20)
Write-Host $_.SamAccountName}
if (!$_.emailaddress){ $_.emailaddress=$_.SamAccountName+'@domen.ru'}
# write-host -Name $_.CN -DisplayName $_.DisplayName -City $_.City -Department $_.Department -Surname $_.Surname -GivenName $_.Givenname -SamAccountName 
Читать далее

Как установить winlogbeat для elk kibana на windows server

Задача собрать логи с windows server с помощью winlogbeat. Качаем актуальную версию winlogbeat https://artifacts.elastic.co/downloads/beats/winlogbeat/winlogbeat-7.9.1-windows-x86_64.zip 

Распаковываем на сервер. переименовываем в winlogbeat. Копируем в C:\Program Files .

После этого запускаем установку

cd 'C:\Program Files\Winlogbeat'
.\install-service-winlogbeat.ps1

Проверяем что служба установилась Как установить winlogbeat для elk kibana на windows server

После этого правим конфиг

У меня так

winlogbeat.event_logs:
  - name: Application
    ignore_older: 72h

  - name: System

  - name: Security
    processors:
      - 
Читать далее

Как с помощью powershell через групповые политики узнать на каких пк нужно дефрагментировать диск и время выполнения политик

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

Написал скрипт и засунул в запланированное задание с помощью групповой политики скрипт

$name=hostname
$Yesterday = (Get-Date) - (New-TimeSpan -Day 2)
get-WinEvent -LogName "Microsoft-Windows-GroupPolicy/Operational"  | Where-Object {$_.ID -like ‘800*’} |  Where-Object {$_.TimeCreated -ge $Yesterday }|  Export-Csv \\имя сервера\test\gpo\$name.csv -Delimiter ";" 
Читать далее

Как с помощью powershell посмотреть event log gpo журнал выполнение групповых политик на разных пк.

Задача выяснить сколько выполняются групповые политики на разных пк в сети.  Applications and Services Logs –> Microsoft -> Windows -> Applications and Services Logs -> Group Policy -> Operational.

$S = Get-Content C:\tmp2.txt
ForEach ($Server in $S) {

get-WinEvent -LogName "Microsoft-Windows-GroupPolicy/Operational" -ComputerName $Server | Select-Object TimeCreated,Message,Id, @{name='ComputerName'; expression={$Server}} | Where-Object {$_.ID -like ‘500*’} |  Format-Table -AutoSize

}

Читать далее

Как установить System Center Operations Manager (SCOM) 2019

Поскольку это чистый, ванильный сервер Windows 2019, нам нужно будет установить все необходимые компоненты веб-консоли вместе с элементами управления Report Viewer (возможно, SQL CLR-типы тоже …).

  • Чтобы узнать о предварительных требованиях к Report Viewer, перейдите ЗДЕСЬ .
  • Вот команда PowerShell, которую я выполнил для установки необходимых функций / ролей IIS:
Import-Module ServerManager
Add-WindowsFeature Web-Server, Web-WebServer, Web-Common-Http, Web-Default-Doc, Web-Dir-Browsing, 
Читать далее

Как обновить драйвер QLogic Fibre Channel на esxi 6.7. PSOD пурпурный экран смерти.

У нас была проблема что чистый esxi 6.7 валился в psod пурпурный экран смерти на blade сервере ProLiant BL460c Gen9. В ошибке писал usb устройство но usb не было вставлено. После изучения дампа нашел запись про Fibre Channel.

Сначала нужно определить какой драйвер используется у нас и какой адаптер.

Подключился по ssh на esxi хост. Перед эти включил … Читать далее

Как исправить ошибку Veeam Failed to call RPC function ‘PckgFind’

После установки нового сервера управления Veeam и перетаскивания на него серверов для бэкапов появилась ошибка . Discovering installed packages Error: Failed to call RPC function ‘PckgFind’

Как исправить ошибку Veeam Failed to call RPC function 'PckgFind'

Заходим на сервер на котором ошибка.

Так как у нас используется hyper-v server 2016. То будем удалять через Powershell.

Выводим список программ установленных

Get-WmiObject Win32_Product | ft name,version,vendor,packagename

Как исправить ошибку Veeam Failed to call RPC function 'PckgFind'

Удаляем

Veeam Hyper-V Integration… Читать далее

Как сбросить зависшую сессию с rdp терминала. rds

# Сброс зависших сессий, добавьте в расписание на своем скрипт сервере
Function RDP_Resetfailure($server){
  $ts = qwinsta /server
  $td = ($ts | where { ($_ -like "*Disc*" -or $_ -like "*Диск*" -or $_ -like "*ЁбЄ*" ) -and $_ -notlike "*services*"})
  $tdselect = $td # Для отладки или внесения в лог: Login Id State
  $td = $td -ireplace ("[^0-9]","") # оставляем только id сессий
  for($i=0; $i -lt $td.Count; $i++){
    Write-Host Reset RDP Failture session ID: $td[$i] $tdselect[$i]      #отладка просмотр id сессий
    rwinsta $td[$i] /server           # сброс зависших сессий, раскомментируйте эту строку
  }
}

$server = "MyRDPServer"
RDP_Resetfailure($server)
Читать далее