Архив

Архив автора

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

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

Author: admin 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: admin 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: admin Categories: Без категории Tags: