Home
- Details
- Written by: po3dno
- Category: C#
- Hits: 854
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.DirectoryServices;
using System.Management;
using System.Threading;
namespace LocalGroup_AD
{
class Program
{
static void Main(string[] args)
{
string r = null;
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem"))
{
ManagementObjectCollection information = searcher.Get();
if (information != null)
{
foreach (ManagementObject obj in information)
{
r = obj["ProductType"].ToString();
}
}
Console.WriteLine("ProductType: {0}", r);
}
string osType = null;
switch (r)
{
case "1": osType = "WKS"; break;
case "3": osType = "SRV"; break;
default:
Console.WriteLine("No valid input for osType");
Environment.Exit(0);
break;
}
//Console.ReadKey();
//Environment.Exit(0);
if (args.Count() != 1)
{
Console.WriteLine("Usage: LocalGroup_AD.exe [adm|rdu]");
Environment.Exit(0);
}
string PC = System.Environment.MachineName;
string sid = null;
string lGroup = null;
string groupName = null;
switch (args[0].ToLower())
{
case "adm": lGroup = "Administrators"; groupName = "local_administrator_" + PC; sid = "544"; break;
case "rdu": lGroup = "RDU"; groupName = "local_rdu_" + PC; sid = "555"; break;
default:
Console.WriteLine("No valid input for groupName");
Environment.Exit(0);
break;
}
DirectoryEntry dom = new DirectoryEntry();
string pathDN = "OU=" + lGroup + ",OU=" + osType + ",OU=LocalGroups,OU=Security Groups";
Console.WriteLine(pathDN);
DirectoryEntry ou = dom.Children.Find(pathDN);
bool groupName_exist = false;
try
{
DirectoryEntry childGroup = ou.Children.Find("CN=" + groupName);
if (childGroup != null)
groupName_exist = true;
}
catch { }
if (groupName_exist)
{
Console.WriteLine("Group {0} exist", groupName);
}
else
{
try
{
DirectoryEntry group = ou.Children.Add("CN=" + groupName, "group");
group.Properties["samAccountName"].Value = groupName;
group.CommitChanges();
}
catch (Exception e)
{
Console.WriteLine("Try add group to domain..." + Environment.NewLine + e.ToString());
}
}
ManagementObjectSearcher searchGroup = new ManagementObjectSearcher(@"SELECT name FROM Win32_Group where LocalAccount = true and sid = 'S-1-5-32-"+ sid +"'");
ManagementObjectCollection adminGroup = searchGroup.Get();
string gr = null;
foreach (ManagementObject group in adminGroup)
{
gr = group["Name"].ToString();
Console.WriteLine(group["Name"].ToString());
continue;
}
Thread.Sleep(10000);
DirectoryEntry localGroup = new DirectoryEntry(String.Format("WinNT://{0}/{1},group", Environment.MachineName, gr));
DirectoryEntry remoteGroup = new DirectoryEntry(String.Format("WinNT://{0}/{1}", Domain, groupName));
try
{
localGroup.Invoke("Add", new object[] { remoteGroup.Path });
localGroup.CommitChanges();
}
catch (Exception e)
{
Console.WriteLine("Try add group to local group..." + Environment.NewLine + e.ToString());
}
}
}
}
- Details
- Written by: po3dno
- Category: Windows
- Hits: 831
Условия LDAP
Фильтр определяет необходимые условия для включения объекта в результат запроса. LDAP-фильтр может содержать одно или более условий.
Результат условия - "Истина" или "Ложь". Общий вид фильтра
(<Атрибут AD><оператор сравнения><значение>)
<Атрибут AD> - LDAP-имя атрибута AD. Операторы сравнения
Оператор | Значение |
= | Равенство |
>= | Больше или равно |
<= | Меньше или равно |
- Details
- Written by: po3dno
- Category: Power Shell
- Hits: 938
Mount-WindowsImage -Path .\iso -ImagePath 'C:\VMs\w2012r2_en\Virtual Hard Disks\w2012r2_en.vhdx' -Index 1
New-WindowsImage -CapturePath .\iso -Name "Windows 2012R2 2111" -ImagePath C:\winpe_x64\install.wim -Description "Windows 2012R2 2111" -Verify
Dismount-WindowsImage -Path .\iso\ -Discard
unpack iso
replace install.wim
.\oscdimg.exe -m -o -u2 -udfver102 -bootdata:2#p0,e,bC:\winpe_x64\ISO\boot\etfsboot.com#pEF,e,bC:\winpe_x64\ISO\efi\microsoft\boot\efisys.bin c:\winpe_x64\ISO D:\VM\ISO\SW_DVD9_Windows_Svr_Std_and_DataCtr_2012_R2_64Bit_Russian_-4_MLF_X19-82917_2111.iso
- Details
- Written by: po3dno
- Category: Other
- Hits: 1027
powercfg -setdcvalueindex SCHEME_CURRENT SUB_BATTERY BATACTIONCRIT 0
- Details
- Written by: po3dno
- Category: Exchange Server
- Hits: 931
$report = @() $Mbxs = Get-Mailbox -Resultsize Unlimited foreach ($Mbx in $Mbxs) { $Owner = Get-Mailbox $Mbx | Get-MailboxPermission -Owner $Manager = Get-ADUser $mbx.SamAccountName -Server domain.com -Properties Manager #| select Name, @{N='Manager';E={(Get-ADUser $_.Manager).name}} $permission = get-mailboxpermission -identity $Mbx |where {$_.user -notlike "*NT AUTHORITY\SELF" -and $_.IsInherited -eq $false}| select @{Name="Displayname"; Expression={(Get-Recipient $_.user.ToString()).Displayname.ToString()}}, @{Name="primarysmtpaddress"; Expression={(Get-Recipient $_.user.ToString()).primarysmtpaddress.ToString()}}, user, @{Name="AccessRights";Expression={$_.AccessRights}}| Select User, name, accessrights $reportObj = New-Object PSObject $reportObj | Add-Member NoteProperty -Name "Mailbox Name" -Value $mbx.name $reportObj | Add-Member NoteProperty -Name "RecipientTypeDetails" -Value $mbx.RecipientTypeDetails $reportObj | Add-Member NoteProperty -Name "Access Rights" -Value $permission.AccessRights $reportObj | Add-Member NoteProperty -Name "Username" -Value $permission.user $reportObj | Add-Member NoteProperty -Name "Owner" -Value $Owner.owner $reportObj | Add-Member NoteProperty -Name "Manager" -Value $Manager.manager $report += $reportObj } $report