Знакомство с Hyper-V от Microsoft

10 Апрель 2009

Вчера так сказать началось мое знакомство с технологией Hyper-V позволяющей консолидировать сервера в виртуальную среду. Данная роль добавляется только на серверах с поддержкой x64. Мной была выбрана Windows Server 2009 Ent так как если на ней установлена только роль Hyper-V, то лицензий позволяет установить еще 4 виртуальных сервера. Добавление роли описывать не буду, смысла нету, об этом очень хорошо написала сама Microsoft. Хочу лишь привести интересные тонкости с которыми я столкнулся.

1. После добавления роли Hyper-V на русской Windows Server необходимо в «Язык и региональные стандарты» оставить «формат» и «Язык программ, не поддерживающих Юникод» в Английский (США) иначе в лога будет появляться вот такая запись при попытке запустить сервис «Virtual Machine Management»

Имя журнала:   System
Подача:        Service Control Manager
Дата:          08.04.2009 15:51:27
Код события:   7023
Категория задачи:Отсутствует
Уровень:       Ошибка
Ключевые слова:Классический
Пользователь:  Н/Д
Компьютер:     VS-01.isea.ru
Описание:
Служба "Virtual Machine Management" завершена из-за ошибки
Параметр задан неверно.

2. Сразу после добавления роли рекомендую поставить вот это обновление: KB950050 оно обновит ваш Hyper-V с pre-release версии до RTM, если же у вас вервия операционной системы Windows Server 2008 R2, то там уже это обновление установлено.

——————————————-

Сейчас провожу тестирование данной технилогии в разных ситуациях которые могут не дай бог случится во время работы. если результат будет положительный, то буду внедрять в продакшен.

Author: Categories: Работа Tags:

Cинхронизация времи на компьютере под управлением Windows Server с сервером NTP под управлением ОС, отличной от Windows

2 Апрель 2009

Хот действий очень прост:

w32tm /config /manualpeerlist:IP-адрес_сервера_NTP,0x8 /syncfromflags:MANUAL
net stop w32time
net start w32time
w32tm /resync

Если же через GPO делать, то необходимо открыть:
Конфигурация компьютера -> Политики -> Административные шаблоны -> Система -> Служба времени Windows -> Поставщик времени -> Настроить NTP-клиента Windows
Там делаем следующее:
Ntp Server: IP-адрес_сервера_NTP,0×8
Тип: NTP
все остальное можно оставить по умолчанию.

Почитать какие ошибки в Event Log будут при данной ошибке можно тут.

Author: Categories: Работа Tags:

Настраиваем разрешение консоли.

Приведу пример конфигурации ядра для настройки консоли. Надоело что экран по умолчанию маленький 640×480 Захотелось большего.

В ядро добавляем:

options         SC_PIXEL_MODE
options         VESA
options         VGA_WIDTH90
options         SC_NORM_ATTR=(FG_GREEN|BG_BLACK)
options         SC_KERNEL_CONS_ATTR=(FG_RED|BG_BLACK)

Так же меняем цвета консоли, обычный текст становится зеленым, а вывод ядра красным.
В rc.conf добавляем:
allscreens_flags=»-g 132×60 MODE_279″
Это для 17 дюймов. Для других мониторов надо смотреть через vidcontrol -i mode | more сводную таблицу и выбрать что подходит для конкретного случая.

Author: Categories: Работа Tags: ,

День активации Vista

Сегодня какой-то день активаций. На работе после смены матери на новом компе виста попросила очередной активации. Как не странно она ругнулась, что ключ уже используется. Пришлось звонить по бесплатному телефону и вводить 9 последовательностей по шесть цифр, после этого робот меня вежливо спросил, на скольких машинах я использую данную версию Windows. Я конечно робко ответил, что на одной. После этого активация прошла удачно.
Второй этап был с домашним ноутбуком, который я не включал уже больше месяца. Конечно он попросил активацию, только вот не давал нормально загрузиться чтоб подключить USB CDMA модем и провести активацию по интернету. Пришлось опять звонить. Порадовало что с меня по бесплатному номеру не сняли ни копейки. Правда активация прошла странно, робот ругнулся что у меня неверная последовательность цифр. Вежливо переключил на живого человека. Мне ответила девушка, с сильным акцентом, предложила по новой ввести код продукта, подождала и подтвердила что все прошло нормально и обратно переключила на робота. Я правильно ввел продиктованные цифры, после чего активация прошла.
————-
Вывод я для себя сделал такой. Пользоваться этим можно, единственное ответ диктуется достаточно быстро, нужно иметь сноровку чтоб вбивать сразу.
Переключать меня на человека не было необходимости, робот сам мог предложить сделать то же самое что и девушка. При чем во второй раз голос робота был явной нарезкой :)

Author: Categories: Работа Tags:

Находим у кого размер папки больше установленного значения.

17 Март 2009
Комментарии отключены

Сам скрипт user-dir-size.pl1

param ($path,$size,$diff,$min)
#$diff = "no";
$text = "`n
        `t Надо использовать следующий синтаксис скрипта:                              
        `t -path - путь до домашней папки                                            
        `t -size - размер папки, поддерживается сокращения: Gb,Mb,Kb                
        `t -diff - вычислить кто почти достиг придела в диапазоне: yes|no. Default no
        `t -min  - минимальный размер, используется в паре с -size                  
        `t---------------------------------------------------------------------------
        `t Пример:                                                                  
        `t ./user-dir-size.ps1 -path "
"E:\Homes\"" -size 1Gb                          
        `t ./user-dir-size.ps1 -path "
"E:\Homes\"" -size 1Gb -diff yes -min 900Mb"
 
if ((!$diff) -or ($diff -eq "no")) {
    if (!$path -or !$size ) {
    write-warning $text ;
    return
    }
    else{
Get-ChildItem -LiteralPath $path |  
Where-Object {$_.PSIsContainer} |  
ForEach-Object {  
    $u=$_
    $u | Get-ChildItem -Recurse |
    Measure-Object  Length -Sum |
    Where-Object {($_.sum -gt $size)} |
    Select @{name="Name"; expression={$u.name}},  
        count,  
        @{n="Summ"; e={"{0:n2}Mb" -f ($_.sum/1Mb)}}  
} | ConvertTo-Html -Head " <link rel='stylesheet' href='styles.css' type='text/css' />" |Out-file  "Превышена квота.html"
    }
}
else {
    if ((!$path -or !$size -or !$min) -or ($diff -ne "yes")) {
    write-warning $text ;
    return
    }
    else {Get-ChildItem -LiteralPath $path |  
Where-Object {$_.PSIsContainer} |  
ForEach-Object {  
    $u=$_
    $u | Get-ChildItem -Recurse |
    Measure-Object  Length -Sum |
    Where-Object {($_.sum -gt $min) -and ($_.sum -lt $size)} |
    Select @{name="Name"; expression={$u.name}},  
        count,  
        @{n="Summ"; e={"{0:n2}Mb" -f ($_.sum/1Mb)}}  
}| ConvertTo-Html -Head " <link rel='stylesheet' href='styles.css' type='text/css' />" |Out-file  "Близок к превышению.html"
 
    }
}

Таблица стилей styles.css

body {
background-color: #CCC;
}
body,table,td,th {font-family:Tahoma; color:black;Font-Size;12pt}
th {
font-weight:bold;
background-color: #99F ;
}
td {background-color: white; }
table {
background-color: #000;
text-align: center;
}

Данный скрипт считает общий объем домашней папки и выводи в красивую html табличку тех товарищей, чей объем папки превысил 1Gb места

Восстановление политик GPO по умолчанию.

Если случайно удалили/изменили политики GPO который создаются при добавлении роли AD на Windows Server. Для этого подойдет утилита dcgpofix.exe.
Для Windows Server 2003

dcgpofix /Target:Domain | DC

Для Windows Server 2008

dcgpofix /ignoreschema /Target:Domain | DC

При восстановлении политики ни куда не линкуются, это надо делать вручную.

Author: Categories: Заметки Tags:

Смена владельца папки/файла

Вот и мой первый так сказать скриптец который в папке с домашними папками доменных пользователей восстанавливает владельцев папки исходя из названии папки. Так как у нас в пусть до домашней папки выглядит так //server.domain.ru/Homes$/%username%. Вот сам скрипт:

Get-ChildItem -Path D:\Homes | ForEach-Object { icacls $_ /setowner "DOMAIN\$_" /T }

Рекомендую перед запуском скрипта запустить icacls D:\Homes /save C:\acl.txt /T для того чтоб на свякий случай сохранить дамп пермишенов.

P.S. все это дело для Windows Server 2008, так как icacls входит в его состав. Для Windows Server 2003 есть cacls.

Переместить пользователей по подразделениям исходя из их местонахождения в исходном домене

Спасибо товарищу Alexander Donin с форума Microsoft за помощь в написании данного скрипта на PowerShell для раскидывания пользователей по подразделениям исходя из их положения в исходном домене. Данный скрипт помогает раскидать пользователей в целевом доменене по подразделением при их переносе с помощью ADMT

#Заменить имя OU
$Ou="Migr_users"
#Заменить имя нового домена
$Domain1="DC=domain_new,DC=ru"
#Заменить имястарого домена
$Domain2="DC=domain_old,DC=ru"
#Ищем пользователей в OU
$Path1 = "LDAP://OU=" + $OU + "," + $domain1
$Path2 = "LDAP://" + $domain2
$Search = New-Object DirectoryServices.DirectorySearcher([ADSI]$Path1)
$Search.filter = "(&amp;(objectCategory=user)(cn=*))"
$Users = $Search.Findall()
# для каждого
foreach ($User_n in $Users ){
#находим соотв. в старом домене
$User = [ADSI]$User_n.Path
$USerName = [string]$User.Name
$Search2 = New-Object DirectoryServices.DirectorySearcher([ADSI]$Path2)
$Search2.filter = "(&amp;(objectCategory=user)(cn=$USerName))"
$User_old = $Search2.FindOne()
#меняем в пути имя домена
$User_old = [ADSI]$User_old.Path
$User_old_tmp = [string]$User_old.distinguishedName
$Path3 = [string]$user_old_tmp.Replace($domain2,$domain1)
#удаляем начало (СN=имя пользователя,)
$UserCN="CN=" + $user_old.CN + ","
$Path3 = "LDAP://" + [string]$Path3.Replace([string]$UserCN,"")
#собственно перемешение
$user.psbase.MoveTo([adsi]$Path3)
}
#Конец

Первый на….

Вот и свершилось чудо, я наконец нашел время поставить это чудо чтоб обзавестись своим блогом

Author: Categories: Без категории Tags: