Показаны сообщения с ярлыком powershell. Показать все сообщения
Показаны сообщения с ярлыком powershell. Показать все сообщения

воскресенье, 19 января 2020 г.

Скрипт на создание локальных пользователей

$csv_path='C:\Users\Administrator\Desktop\users.csv'
$csv=Import-Csv -Path $csv_path -Encoding UTF8 -Delimiter ';'
$local_group_name="Remote Desktop Users"
foreach ($c in $csv) {
    $password=ConvertTo-SecureString -String $c.Password -AsPlainText -Force
    New-LocalUser -FullName $c.Name -Name $c.Login -Password $password
    Add-LocalGroupMember -Group $local_group_name -Member $c.Login
}

воскресенье, 10 ноября 2019 г.

Скрипт для вычисления размера профилей локальных пользователей Windows | How to calculate Windows local user profile's size

#Requires -Version 5
if ($PSVersionTable.PSVersion.Major -ge 6) {Import-Module Microsoft.Powershell.LocalAccounts -SkipEditionCheck}
$OutTable=@()
get-localuser | sort LastLogon,Name | select Name,Enabled,LastLogon,PasswordLastSet,SID | % {
    $RegPath='"'+'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\'+$_.SID+'"'
    $ProfilePath='C:\Users\'+$_.Name
    if (Test-Path $RegPath) {$ProfileImagePath=(Get-ItemProperty -Path $RegPath).ProfileImagePath
    } elseif (Test-Path ($ProfilePath)) {$ProfileImagePath=$ProfilePath
    } else {$ProfileImagePath=$null}
    $Size='0 GB'
    if (!($ProfileImagePath -eq $null)) {
         $Size='{0:N2} GB' -f ((ls $ProfileImagePath -Recurse -force -ErrorAction SilentlyContinue | `
          Measure-Object -Property Length -Sum -ErrorAction SilentlyContinue).Sum/1gb)    
    }
    $TableRow=New-Object psobject -Property @{
        "Login"=$_.Name
        "Enabled"=$_.Enabled
        "LastLogon"=$_.LastLogon
        "PasswordLastSet"=$_.PasswordLastSet
        "SID"=$_.SID
        "Size"=$Size
    }
    $OutTable+=$TableRow
}
$OutTable | Sort Login | ft Login,Size,Enabled,LastLogon,SID,PasswordLastSet

среда, 25 сентября 2019 г.

Скрипт для получения сертификата Let's Encrypt для Exchange Server

Скачать и установить .Net FrameWork 4.7.2 и выше
Скачать WinAcme и распаковать в C:\LetsEncrypt.
Сохранить скрипт в папку C:\LetsEncrypt с расширением ps1 и запустить его от имени администратора. Пример: powershell.exe -File C:\LetsEncrypt\MyScript.ps1

#Requires -RunAsAdministrator
#Requires -Version 5

$WinACMEFile="C:\LetsEncrypt\wacs.exe"

$DefaulServerName='mail.example.com'
$DomainList="$DefaulServerName,autodiscover.example.com,"
$DomainList+=($env:COMPUTERNAME).ToLower()+'.'+($env:USERDNSDOMAIN).ToLower()

$param='--target manual '
$param+="--host $DomainList "
$param+="--certificatestore My "
$param+='--installation iis,script '
$param+='--installationsiteid 1 '
$param+='--script "./Scripts/ImportExchange.ps1" '
$param+="--scriptparameters `"'{CertThumbprint}' 'IIS,SMTP,IMAP' 1 '{CacheFile}' '{CachePassword}' '{CertFriendlyName}'`""

cd $LetsEncryptFolder
Start-Process -FilePath $WinACMEFile -ArgumentList $param -NoNewWindow -Wait

среда, 21 августа 2019 г.

Полезные скрипты для Hyper-v

Добавить место на SCSI диск на Hyper-V 2012
Import-Module Hyper-V
$AdditionalSize=10gb
$vm=get-vm rdh-01
$sql_vhd=$vm | stop-vm -Passthru | Get-VMHardDiskDrive | ? Path -like "*SQL*"
$sql_vhd_size=(Get-VHD $sql_vhd.Path).Size
Start-Sleep -Seconds 60
Resize-VHD -Path $sql_vhd.Path -SizeBytes ($sql_vhd_size+$AdditionalSize)
Start-Sleep -Seconds 60
$vm | Start-VM

воскресенье, 4 августа 2019 г.

Скрипты по поиску компьютеров в AD

Найти компьютеры по шаблону и вывести имя, активность, путь в AD и последний вход
Import-Module ActiveDirectory
$list="20","24","27","33","44","-vip3"
$AdComputerList=Get-ADComputer -Filter {Name -like "HP*"} -Properties LastLogon
$ResultTable=@()
foreach ($l in $list) {
 $FindPcName="HP"+$l
 foreach ($pc in $AdComputerList) {
  if ($pc.Name -eq $FindPcName) {
   $ResultTable+=$pc | select Name,Enabled,DistinguishedName,@{name='lastLogon'; expression={[datetime]::fromFileTime($_.lastLogon)}}}
 }
}
$ResultTable | ft

воскресенье, 12 мая 2019 г.

Обновление сертификата http на Windows

На powershell:

Import-Module pkiclient
Import-PfxCertificate <my_cert.pfx> -CertStoreLocation "Cert:\LocalMachine\My" -Password (ConvertTo-SecureString <PasswordToPfx> -AsPlainText -Force)
netsh http show ssl #этой командой смотрим все доступные службы
#и выбираем адрес и id для следующей команды
netsh http update sslcert ipport=<ip_addr>:<port> certhash=<cert_hash> appid=<app_id>

четверг, 11 апреля 2019 г.

Вернуть язык в терминале

После отключения от терминальной сессии на серверах win 2012 и новее у пользователя отваливается язык. Чтобы его восстановить нужно запустить скрипт powershell
$a=Get-WinUserLanguageList;
$a.Add('ru-RU');
$a.Add('en-US');
Set-WinUserLanguageList $a -Force

вторник, 12 марта 2019 г.

Создание сетевой папки (шары)

Для Windows:
а) через powershell
$folder='c:\share'
mkdir $folder
New-SmbShare -Name share -Path $folder -ChangeAccess user

б) через cmd
set folder=c:\share
mkdir %folder%
net share sharename=%folder% /GRANT:user,CHANGE

Для linux:
а) сетевая папка samba
mkdir /share
nano /etc/samba/smb.conf

Добавляем секцию
[share]
   browseable = yes
   read only = no
   guest ok = no
   path = /share/


Ввод в домен рабочей станции

Для Windows: запустить powershell и ввести команду
Add-computer -domainName "domain.lan" -Restart

пятница, 8 марта 2019 г.

How to Enable Active Directory Recycle Bin (Server 2016)



 |  | 3 


In this tutorial, you will learn how to enable the Active Directory Recycle bin on Windows Server 2016.
I’ll show you how to enable it through the GUI as well as with Powershell.
The AD recycle bin comes in handy when you accidentally delete an AD object and need to restore it.

пятница, 22 февраля 2019 г.

Шпаргалка по назначению прав на файлы

cmd:
icacls "\\path\file" /grant user:(OI)(CI)(M) - Добавить права на изменения с наследованием

powershell:
start-process "$env:windir\system32\icacls.exe" -arg '"\\path\file" /grant user:(OI)(CI)(M)' -nonew - Добавить права на изменения с наследованием

bash:

воскресенье, 17 февраля 2019 г.

воскресенье, 3 февраля 2019 г.

Скрипт на отключение пользователя от Windows Vpn Server и на удаления его из группы AD

Import-Module ActiveDirectory
Import-Module RemoteAccess
$user='user'
$group='vpn-users'
$server='vpn.domain.local'
#[string]$filter='"*'+$user+'*"'
Remove-ADGroupMember -Members $user -Identity $group -Confirm:$false
Get-RemoteAccessConnectionStatistics -ComputerName $server | ? UserName -like "*$user*" | Disconnect-VpnUser -ComputerName $server

понедельник, 28 января 2019 г.

Настройка или миграция WSUS на новый сервер

1. Устанавливаем компоненты: Install-WindowsFeature UpdateServices-Services,UpdateServices-DB -IncludeManagementTools
2. Для миграции потребуется открыть порт 7000: New-NetFirewallRule -Name SMIG -DisplayName 'ServerMigration' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 7000 и установить компонент миграции Install-WindowsFeature Migration -IncludeManagementTools
3. Запусть экспорт данных c:\Program Files\Update Services\Tools\WsusUtil.exe export d:\tmp\wsus_exp.xml.gz d:\tmp\wsus_exp.log
4. Выключить службы WsusService и W3SVC
5. Отключить базу данных SQL и перенести её на другой сервер, затем на нём подключить базу
6. Отключить диск с данными WSUS и перенести его на другой сервер, затем подключить. В консоли "Управления дисками" сделать диск "Онлайн"
7. Запустить настройку нового wsus cd /d "C:\Program Files\Update Services\Tools\" && WsusUtil.exe postinstall SQL_INSTANCE_NAME=SQL-EXPR CONTENT_DIR=d:\wsus
8. Запустить импорт данных c:\Program Files\Update Services\Tools\WsusUtil.exe import d:\tmp\wsus_exp.xml.gz d:\tmp\wsus_exp.log




Документация по установке
Документация по миграции

вторник, 22 января 2019 г.

воскресенье, 23 декабря 2018 г.

Установка контроллера домена

На базе Windows:
1) Если первый контроллер домена:
Install-WindowsFeature AD-Domain-Services
$domain='test'
Import-module ActiveDirectory
Install-ADDSForest -DomainName $domain -InstallDns
#reboot
Import-module ActiveDirectory
Enable-ADOptionalFeature 'Recycle Bin Feature' -Scope ForestOrConfigurationSet -Target $domain

2) Если нужно добавить контроллер домена в существующий домен:
Import-module ActiveDirectory
Install-ADDSDomainController -DomainName 'test' -InstallDNS

среда, 12 декабря 2018 г.

Удалённая установка ПО через powershell

Чтобы запустить удалённую установку через удалённое подключение с помощью Enter-PSSession или через запуск команды Invoke-Command нужно изменить команду переписав её как Start-Process <полный пусть к программе> -ArgumentList <какие-то аргументы>, тогда процесс верно запустится в фоне и задача отработает.
Например, если нужно запустить команду:

msiexec /i file.msi /quiet /qn /log c:\tmp

то итоговая команда будет

Start-Process 'c:\windows\system32\msiexec.exe' -ArgumentList '/i file.msi /quiet /qn /log c:\tmp'

Если необходимо закинуть файл на удалённый комп, то в команду копирования добавляем нужную сессию:

Copy-Item -ToSession (New-PSSession -ComputerName <PC_name>) -Path <SourceFile> -Destination <DestinationFolder>

Установка ПО в тихом режиме

понедельник, 10 декабря 2018 г.

Решение проблемы второго прыжка в Powershell

Регистрируем конфигурацию
$user='domain\user'
$comp='pc1'
$cfg_name='MyCfg'
Invoke-Command -ComputerName $comp {Register-PSSessionConfiguration -name $args[0] -RunAsCredential $user -force} -credential $user -ArgumentList $cfg_name

Далее подключаемся к компу:
Enter-PSSession -comp $comp -ConfigurationName $cfg_name

или выполняем одну команду:
Invoke-Command -comp $comp {ls \\server\share} -ConfigurationName $cfg_name