Перейти к содержимому

powershell

Как удалить файлы с длинным путем The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.

function Remove-PathToLongDirectory
{
    Param(
        [string]$directory
    )
 
    # create a temporary (empty) directory
    $parent = [System.IO.Path]::GetTempPath()
    [string] $name = [System.Guid]::NewGuid()
    $tempDirectory = New-Item -ItemType Directory -Path (Join-Path $parent $name)
 
    robocopy /MIR $tempDirectory.FullName $directory | out-null
    Remove-Item $directory -Force | out-null
    Remove-Item $tempDirectory -Force | out-null
}

Remove-PathToLongDirectory "T:\Закрытые проекты"

 

Как cменить пароль локального администратора в домене на серверах через Powershell.

Получаем список серверов или пк

Get-ADComputer -filter * -SearchBase 'DC=adminbd,DC=adminbd,DC=ru' | select -ExpandProperty name | sc c:\comps.txt
Get-ADComputer -filter * -SearchBase 'DC=adminbd,DC=adminbd,DC=ru' | select -ExpandProperty name | sc c:\comps.txt
 
 
$computer = "c:\comps.txt"
foreach ($computerName in (Get-Content $computer))
{
If (Test-Connection -ComputerName $computerName -Count 2 -Quiet)
{
Write-Host "Пытаюсь проверить компьютер на пакеты ping";
Invoke-Command -ComputerName $computerName -ScriptBlock {
#$credential = Get-Credential -UserName "Администратор" -Message "Введите новый пароль";
$UserName="Admin"
$Password=convertto-securestring "пароль" -asplaintext -force
If ($UserName -eq $null)
{
Write-Warning "The username and/or the password is empty! I quit.";
Exit;
}
Set-LocalUser -Name $UserName -Password $Password;
}
} Else
{
Write-Warning "Компьютер 
Читать далее

Как поменять логин и пароль на hp ilo и настроить ldap.

Задача сменить локального пользователя на всех hp ilo и настроить ldap авторизацию с группами администраторов и юзеров . Удалить лишних пользователей.

Устанавливаем HPiLOCmdlet

Оставлю локально вдруг что та смениться.  HPiLOCmdlets-x64

После установки

Import-Module HPiLOCmdlets

или

Install-Module -Name HPEiLOCmdlets

Если не хватает прав на запуск

Set-ExecutionPolicy RemoteSigned

Если ошибки

Install-PackageProvider Nuget –Force

Install-Module –Name PowerShellGet –Force

Update-Module -Name PowerShellGet

для начало надо просканировать сеть на наличие ilo hp.

Find-HPiLO 172.16.35.0-255 | ft -AutoSize

Как поменять логин и пароль на hp ilo и настроить ldap.

После этого поместим все найденные ip в файл

Find-HPiLO 172.16.35.0-255 |  Select-Object ip |  Export-Csv C:\1\2.csv

После этого смотрим какие есть уз на ilo

$Username="iloadmin"
$Password="пароль"

$path = 
Читать далее

Как сделать плановую перезагрузку серверов 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"
$activbrocer= Get-RDConnectionBrokerHighAvailability 


# Get the current day
$date = Get-Date;

# determine the day, month, and year
$curDay = $date.DayOfWeek;
$curMonth = $date.Month;
$curYear = $date.Year;

# get total days in month
$totalDaysInMonth = [DateTime]::DaysInMonth($curYear, $curMonth);

switch($curDay){
    "Monday" {
        # this is where we want to 
Читать далее

Как отправлять через 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 aleksey.potapushkin -Properties msDS-UserPasswordExpiryTimeComputed, EmailAddress, Name | select Name, @{Name ="ExpirationDate";Expression= {[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}}, EmailAddress
foreach ($user in $users) {
if (($user.ExpirationDate -lt $warnDays) -and ($2Day -lt $user.ExpirationDate) ) {
$lastdays = ( $user.ExpirationDate -$2Day).days
$Subject = 'Срок действия пароля Вашей учетной записи '+$user.EmailAddress+ ' 
Читать далее

Как искать внутри 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 the GPOs in $DomainName" 
Import-Module grouppolicy 
$allGposInDomain = Get-GPO -All -Domain $DomainName 
[string[]] $MatchedGPOList = @()

# Look through each GPO's XML for the string 
Write-Host "Starting search...." 
foreach ($gpo in $allGposInDomain) { 
    $report = Get-GPOReport -Guid $gpo.Id -ReportType Xml 
    if ($report 
Читать далее

Как с клонировать или распространить роли (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 файла

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=adminbd,DC=ru" -UserPrincipalName $_.emailaddress -Enabled $true -ChangePasswordAtLogon $true
  }
  else
  {
  
  Write-Host "Username" $_.CN "exists" -ForegroundColor Red
  
  }}

Формат csv

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

Как создать учётные записи с помощью 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 
Читать далее