Рубрика «powershell» - 21

В дайджесте новостей облачной платформы Microsoft Azure собраны основные анонсы и контент для разработчиков, ИТ-профессионалов и всех специалистов, интересующихся облачными технологиями и платформой Azure. Предыдущие выпуски дайджеста можно всегда найти по следующей ссылке. В этом дайджесте много громких новостей и интересного контента!
Читать полностью »

Предисловие

Недавно мой руководитель поставил задачу автоматизировать установку и настройку продукта Powerchute Business Edition на большом количестве серверов, с различным интерфейсом подключения UPS, USB, COM. Ранее занимался автоматизацией установки различного ПО, но с типом конфигурационных файлов которые использует данный продукт столкнулся впервые. Дело все в том что в качестве файла конфигурации задействованы бинарные файлы java, которые может изменять утилита с GIU интерфейсом, она не подходит для решения задачи.
Читать полностью »

Автогенерация powershell скриптовВсе рано или поздно приходят к желанию переложить занудную и однообразную работу на «плечи» компьютера. Например, ко мне это чувство пришло, когда я начал внедрять Active Directory в организации на 100+ сотрудников. Добавлять и заполнять все поля для большого числа пользователей вручную — ужасно нудное и долгое занятие. Конечно, первым делом я обратился к powershell, но процесс написание скрипта как-то уж слишком затянулся и в конечном счете ничего путного не вышло. Мечты иметь красивый и аккуратный каталог пользователей так и остались мечтами. Пока я не загорелся идеей автоматизации создания powershell-скриптов.
Читать полностью »

В рамках этого дайджеста новостей облачной платформы Microsoft Azure собраны основные анонсы и контент для разработчиков, ИТ-профессионалов и всех специалистов, интересующихся облачными технологиями и платформой Azure. Предыдущие выпуски дайджеста можно всегда найти по следующей ссылке.
В дайджест добавились разделы «Новости Open Source» и «Изучаем платформу».

Читать полностью »

SnapManager — это набор утилит компании NetApp позволяющих автоматизировать процессы снятия так называемых Application-Consistent Backup (ACB) и Crash-Consistent Snapshots (CCS) без остановки приложений, средствами СХД NetApp FAS серии, их архивации, резервного копирования, тестирования копий и архивов, клонирования, примапливания склонированных данных к другим хостам, восстановления и др. функциями через GUI интерфейс одним только лишь оператором приложения без привлечения специалистов по серверам, сети и СХД.

NetApp SnapManager for Oracle & SAN сеть
SnapManager for Oracle on Windows, Cloning Operation

Зачем вообще бэкапировать данные при помощи снапшотов и тем более средствами СХД? Дело в том, что большинство современных способов бэкапирования информации подразумевают длительность процесса, ресурсоёмкость: нагрузка на хост, загрузка каналов, занимание пространства и как следствие к деградации сервисов. Тоже касается и клонирования больших объемов информации для Dev/Test подразделений, увеличивая «временной разрыв» между актуальными данными и резервируемыми, это повышает вероятность того, что бэкап может оказаться «не восстановим». С применением «аппаратных» снапшотов компании NetApp, не влияющих на производительность и занимающий не положенные 100% резервной копии, а только лишь «разницу» (своего рода инкрементального бэкапа или лучше сказать обратного инкрементального бэкапа, на снятие и сборку которого не нужно тратить время), а также возможность передачи данных для резервирования и архивирования в виде снапшотов, позволяя более элегантно решать современные высокие требования бизнеса для подобных задач, уменьшая время передачи информации и нагрузку на хосты.
Читать полностью »

imageЭта статья не претендует на полноценное руководство по программированию на PowerShell или пошаговую инструкцию по разработке высоконагруженных сервисов .NET. Но в ней собраны полезные приемы и разъяснение некоторых особенностей интеграции PowerShell с .NET, которые пока сложно или даже невозможно найти в Сети.
Читать полностью »

Пишем свой пакет для Chocolatey

Chocolatey — пакетный менеджер для windows сильно облегчающий процедуру установки программ, а уж сколько он экономит времени. Про это чудо уже писали на хабре и даже было показано как написать свой пакет для него, но там было больше ручной работы, я же хочу показать как можно немного упростить это дело.
Читать полностью »

В данной статье пойдет речь о сайт коллекциях SharePoint в контексте возможных вариантов начальных url-адресов.
И самое интересное, описан способ создания сайт коллекции на специфическом url на поддомене, отличном от основного приложения.
Итак, всем, кого интересует администрирование SharePoint, и тем, кто не знает курс 70-331 вдоль и поперек, добро пожаловать под кат.
Читать полностью »

image

Одним из наиболее существенных нововведений в Windows Server 2012 лично для меня является новая фича – DHCP Failover. Этот механизм предоставляет возможность балансировки нагрузки и создания избыточности для DHCP сервиса без применения каких-либо кластерных технологий. Но что если, по каким-либо причинам, у вас нет возможности использовать Windows Server 2012 в вашей среде, как и все возможные кластерные технологии? В этом случае к нам на помощь приходит PowerShell. Описанное ниже решение просто, эффективно и основано на следующих компонентах: PowerShell 2.0, встроенная в Windows утилита netsh и стандартный системный планировщик.

Читать полностью »

Всем привет!
Иногда возникает ситуация, когда надо пользователю изменить дату установки пароля в Active Directory. Представляю скрипт. Наверняка многим пригодится.

set-ADUserPswDate.ps1

# Основной скрипт изменения даты установки пароля по файлу или по учетной записи пользователя.
# Автор Лужин Кирилл
# luzhin.kirill@yandex.ru

Add-PSSnapin Quest.ActiveRoles.ADManagement;

$gsFilename = "c:scriptpsset-ADUserPswDate.txt";
$giRows = (Get-Content -LiteralPath $gsFilename).Count;
$giX = 0;
$giMinimumSleep = 218;
$giMaximumSleep = 884;
$gtBeginDay = "08:00:00";
$gtEndDay = "19:00:00";
$today_date = Get-date -Format "dd.MM.yyyy";

function set-password($lsAccount) {
	Set-QADUser $lsAccount -ObjectAttributes @{pwdLastSet=0} | Out-Null;
	Set-QADUser $lsAccount -ObjectAttributes @{pwdLastSet=-1} | Out-Null;
}

function get-password($lsAccount) {
	get-qaduser $lsAccount -IncludedProperties pwdLastSet | % {$lsPwdLastSet = $_.pwdLastSet;}
	$lsPwdLastSet = $lsPwdLastSet.AddHours(3);
	$lsPwdLastSetNorm = get-date -uformat '%d.%m.%Y %R' -Date $lsPwdLastSet;
	return $lsPwdLastSetNorm;
}

function send-eMail($to,$toCc,$text="",$subject="Изменение даты установки пароля",$toBcc="admin3@domain.com") {
	write-host "Кому: $to | тема: $subject | текст: $text";
	$Enc = [Text.Encoding]::UTF8;
	Send-MailMessage -to $to -from "admin1@domain.com" -Bcc $toBcc -Cc $toCc -subject $subject -smtpServer MAIL-SRV -BodyAsHtml $text -Encoding $Enc;
}

function get-sleepRandom($liMinimum, $liMaximum) {
	$giSleep = Get-Random -minimum $liMinimum -maximum $liMaximum
	# $giSleep = 30;
	$giSleepS = $giSleep % 60;
	$giSleepM = $giSleep - $giSleepS;
	$giSleepM = $giSleepM / 60;
	$gdFuture = (Get-Date).AddSeconds($giSleep);
	write-host "Ждем"$giSleepM" минут "$giSleepS" секунд (будет выполнен "$gdFuture")...";
	Start-Sleep -Seconds $giSleep
}

function isAtWork($ltBegin, $ltEnd) {
	$lbAtWork = $FALSE;
	
	$giDayOfWeek = (get-date).DayOfWeek.ToString('d');
		
	if (($giDayOfWeek -gt 0) -and ($giDayOfWeek -lt 6)) {
		$today_date_full = $today_date + " " + $ltBegin;
		$today_date_full2 = $today_date + " " + $ltEnd;
		write-host $today_date_full" - "$today_date_full2;
		$a=[datetime]::parse($today_date_full);
		$c=[datetime]::parse($today_date_full2);
		$b = get-date;
		
		if (($b -gt $a) -and ($b -lt $c)) {
			write-host $b". Время позже 8:00 и раньше 19:00, пользователь может поменять пароль!";
			$lbAtWork = $TRUE;
		} else {
			write-host "Время раньше 8:00 или позже 19:00, пользователь не может поменять пароль.";
		}
	} else {
		write-host "Сегодня выходной, пользователя нет на работе.";
	}
	
	return $lbAtWork;
}

function update-password_wReport($lsAccount) {
	write-host " ";
	write-host "*"$lsAccount;
	$gbAtWork = isAtWork $gtBeginDay $gtEndDay;
	if ($gbAtWork) {
		$gsPwdLastSet = get-password $lsAccount;
		$lsText = "<tr><td style='border:1px solid RGB(200,200,200);'><strong>" + $lsAccount + "</strong></td><td style='border:1px solid RGB(200,200,200);'>" + $gsPwdLastSet + "</td>";
		set-password $lsAccount;
		$gsPwdLastSet = get-password $lsAccount;
		$lsText = $lsText + "<td style='border:1px solid RGB(200,200,200);'>" + $gsPwdLastSet + "</td></tr>";
	} else {
		$lsText = "<tr><td style='border:1px solid RGB(200,200,200);'><strong>" + $lsAccount + "</strong></td><td style='border:1px solid RGB(200,200,200);'>Нет на работе</td><td style='border:1px solid RGB(200,200,200);'></td></tr>";
	}
	return $lsText;
}

$gsText = $gsText + "<table style='border-collapse:collapse; width:500px; font-family:Tahoma,Arial,Calibri;font-size:10pt;'>";
$gsText = $gsText + "<tr><td style='width:40%; border:1px solid RGB(200,200,200); text-align:center;'>Учетная запись</td>";
$gsText = $gsText + "<td style='width:130px; border:1px solid RGB(200,200,200); text-align:center;'>Было</td><td style='width:130px; border:1px solid RGB(200,200,200); text-align:center;'>Стало</td></tr>";

if ($ARGS[0] -ne $Null) {
	$gsText = $gsText + (update-password_wReport $ARGS[0]);
} else {
	Get-Content -LiteralPath $gsFilename | 
		% {
			$gsText = $gsText + (update-password_wReport $_);
			
			$giX = $giX + 1;
			if ($giX -lt $giRows) {
				get-sleepRandom $giMinimumSleep $giMaximumSleep;
			}
		}
}
$gsText = $gsText + "</table>";
if ($ARGS[1] -ne $Null) {
	send-eMail $ARGS[1] "admin1@domain.com" $gsText;
} else {
	send-eMail "admin1@domain.com" "admin2@domain.com" $gsText;
}

Под катом описание, использование и особенности.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js