• Home
  • Linux
  • Docker
  • Windows
    • PS
    • C#
    • Exchange Server
  • Other
    • Perl
    • IPV6
    • MacOS
  • DB
    • MSSQL
    • MariaDB
    • PG

Home

LocalGroup_AD

Details
Written by: po3dno
Category: C#
Created: 05 October 2021
Hits: 1030
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());
            }

        }
    }
}

LDAP

Details
Written by: po3dno
Category: Windows
Created: 30 September 2021
Hits: 1024

Условия LDAP

Фильтр определяет необходимые условия  для  включения объекта в результат запроса. LDAP-фильтр может содержать одно или более условий. 
Результат условия - "Истина" или "Ложь". Общий вид фильтра

(<Атрибут AD><оператор сравнения><значение>)

<Атрибут AD> - LDAP-имя атрибута AD. Операторы сравнения

Оператор Значение
= Равенство
>= Больше или равно
<= Меньше или равно

Read more …

iso uefi

Details
Written by: po3dno
Category: Power Shell
Created: 05 July 2021
Hits: 1128

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

How to stop computer from entering sleep under “Critical Battery Trigger Met” misidentification

Details
Written by: po3dno
Category: Other
Created: 17 June 2021
Hits: 1254
powercfg -setdcvalueindex SCHEME_CURRENT SUB_BATTERY BATACTIONCRIT 0

Mailbox permission export in excel

Details
Written by: po3dno
Category: Exchange Server
Created: 08 June 2021
Hits: 1168
$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 
  1. MariaDB partition
  2. Automatic Partition Maintenance in MariaDB
  3. Sleep unattended idle timeout
  4. Схемы электропитания

Subcategories

Power Shell Article Count:  53

C# Article Count:  10

Perl Article Count:  1

Exchange Server Article Count:  15

Other Article Count:  24

MSSQL Article Count:  17

Windows Article Count:  25

MariaDB Article Count:  3

Linux Article Count:  8

Docker Article Count:  2

pg Article Count:  1

Page 11 of 32

  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

Login Form

  • Forgot your password?
  • Forgot your username?

Statistics

  • Users 2
  • Articles 175
  • Articles View Hits 154293