powershell

Как сделать плановую перезагрузку серверов RD host windows 2016, со снятием нагрузки и возвращением её после ребута.

Задача: есть 7 серверов rd host sesion . Необходимо раз в неделю перезагружать сервер.

Скрипт по снятию подключений с rd host. Запускается в 18-00

Скрипт для запуска через cmd stop rdsh to day.bat

powershell -NoLogo -ExecutionPolicy Bypass -File "%~dp0\stop rdsh to day.ps1"

 

$dp0         = ($MyInvocation.MyCommand.Path | Split-Path -Parent)
#$dp0 = "C:\Scripts\Restart-RDSH"
$RDSCollection = "Farm"

# Get the 
Читать далее

Как подключиться к почте Exchange через Powershell на другом сервере и создать почтовый ящик пользователю.

Выполняем команды в powershell для подключения к серверу Exchange.

$UserCredential = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://mxs01.admindb.ru/PowerShell/ -Authentication Kerberos -Credential $UserCredential
Import-PSSession $Session -DisableNameChecking

После когда поработали нужно отключиться.

Remove-PSSession $Session

Создать почтовый ящик командой

get-user -Identity d.pupkin | Enable-Mailbox -Database MSK06 -RetentionPolicy "Move to archive after 6 month"
get-user -Identity d.pupkin | Enable-Mailbox -ACrchive -ArchiveDatabase 
Читать далее

Как отправлять через powershell пользователям письмо с просьбой о смене пароля т.к. срок пароля истекает.

Задача отправлять письмо о том что срок пароля подходит к концу. Сделали через powershell.

Import-Module ActiveDirectory

$OrgUnit 	= "OU=Locations,DC=adminbd,DC=RU"
$Sender = "helpdesk@adminbd.ru"
$smtpserver ="mail.adminbd.ru"

$warnDays = (get-date).adddays(10)
$2Day = get-date
$Users = Get-ADUser -SearchBase $OrgUnit -filter {Enabled -eq $True -and PasswordNeverExpires -eq $False} -Properties msDS-UserPasswordExpiryTimeComputed, EmailAddress, Name | select Name, @{Name ="ExpirationDate";Expression= {[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}}, EmailAddress
#$Users = Get-ADUser -Identity 
Читать далее

Как открыть профиль пользователя без монтирования (vhdx) user profile disk.

Задача добавлять тестовые базы в 1с. Для этого нужно у пользователя поправить C:\Users\%USERNAME%\AppData\Roaming\1C\1CEStart\v8i . Так как у нас ферма rdsh ,то проблема править файл через монтирование vhds. Через проводник будет легче всего.

Запуск проводника с правами администратора.

param([switch]$Elevated)
 
function Test-Admin {
  $currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
  $currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}
 
if ((Test-Admin) -eq $false)  {
    if ($elevated)
    {
        # tried 
Читать далее

Как удалить site и pools из windows iis с помощью powershell.Deleting sites and application pools from Microsoft IIS using PowerShell

Удалить po0ls

#Deleting Sites and app pools in IIS 7 with PowerShell
$appCmd = "C:\windows\system32\inetsrv\appcmd.exe"

#lists all the sites
#& $appcmd list site 
#deletes a specific site
#& $appcmd delete site "Name of site"
#lists all the sites
#& $appcmd list apppool 
#deletes a specific application pool
#& $appcmd delete apppool "Name of app pool"
#delete any app 
Читать далее

Как искать внутри GPO групповых политик.

Задача была найти политику где изменяется host на пк. Нашёл с помощью скрипта на powershell.

# Get the string we want to search for 
$string = Read-Host -Prompt "What string do you want to search for?" 
 
# Set the domain to search for GPOs 
$DomainName = $env:USERDNSDOMAIN 
 
# Find all GPOs in the current domain 
write-host "Finding all 
Читать далее

Как остановить и запустить все пулы iis через Powershell

Остановить pools iis через Powershell

Import-Module WebAdministration

if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs; exit }

$AppPools=Get-ChildItem IIS:\AppPools | Where {$_.State -eq "Started"}

ForEach($AppPool in $AppPools)
{
 Stop-WebAppPool -name $AppPool.name
# Write-Output ('Stopping Application Pool: {0}' -f $AppPool.name)
}

Запустить pools iis через Powershell

Import-Module WebAdministration

   if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell.exe 
Читать далее

Как с клонировать или распространить роли (Roles and features ) на множество серверов с источника.

Скопировать роли (Roles and features ) с одного сервера на другой

Get-WindowsFeature | where{$_.Installed -eq $True} | select name | foreach{Install-WindowsFeature -ComputerName servername $_.name}

Экспортировать в csv потом импортировать.

Get-WindowsFeature | where{$_.Installed -eq $True} | select name | Export-Csv C:\ps\Roles.csv -NoTypeInformation –Verbose

Import-Csv C:\PS\Roles.csv | foreach{ Install-WindowsFeature $_.name }

 

Как выгрузить в csv список отправленных писем. Кто отправил и кому за 7 дней. Exchange

Get-TransportServer | get-messagetrackinglog -EventID “send” -Start (Get-Date).AddDays(-7) -ResultSize Unlimited | Select timestamp, eventid, Source,Messageid, MessageSubject, sender,@{Name=’recipients‘;Expression={[string]::join(“;”, ($_.recipients))}}, clientip, clienthostname, serverip, serverhostname, messageinfo | export-csv C:\message_log.csv

С заменой system.string

Хорошая ссылка https://www.millersystems.com/powershell-exporting-multi-valued-attributes-via-export-csv-cmdlet/

Как массово создать учётные записи в АД из csv файла

Import-Module ActiveDirectory
Import-Csv -Path C:\user\1.csv -Encoding Default -Delimiter ";" |
foreach-object{
  Write-Host "Username" $_.CN "not exists " $_.SamAccountName.Length
   if ($_.SamAccountName.Length  -gt 20 ) {  $_.SamAccountName=$_.SamAccountName.Substring(0,20)
 Write-Host $_.SamAccountName}
 $Firstname=''
 $FirstName=$_.FirstName
 $filter="SamAccountName -eq '"+$_.SamAccountName+"'"
 $usrexist=get-aduser -filter $filter


  if ($usrexist -eq $null)
  {

  new-aduser -Name $_.CN.trim() -DisplayName $_.DisplayName.trim() -City $_.City -Department $_.Department -Surname $_.Surname -GivenName $_.Givename  -SamAccountName $_.SamAccountName   -Title $_.title -POBox $_.postOfficeBox -AccountPassword (ConvertTo-SecureString '123456Q!' -AsPlainText -force) -Path "OU=Temp,DC=voxys,DC=ru" -UserPrincipalName $_.emailaddress -Enabled $true -ChangePasswordAtLogon $true
  }
  else
  {
  
  Write-Host "Username" $_.CN "exists" -ForegroundColor Red
  
  }}

Читать далее