среда, 9 мая 2018 г.

Windows System Commands Short Guide (v1.5)

I hope the commands I'm using nearly everyday will help you too.

Basic System Info
Whoami returns the user’s login name
Hostname returns the computer name
Msconfig GUI for configuring boot, services, startup…
Msinfo32 GUI for info, including remote computers
Systeminfo CLI tool for info
Net statistics server last restart/power on date…
Net config workstation host/user names info…
Sysdm.cpl System properties (old way)
Win+Pause System window (new way)
Echo %username% logged on %computername at % %date%

Remote commands
Mstsc /v:Server /admin (/console)
Psexec \\Server CMD - CLI remote connection
Change logon /Enable – execute after Psexec
Change logon /Query – execute after Psexec

Processes, Services, Sessions
=Processes=
Tasklist /svc /fo list | more shows all processes on a computer
Tasklist | findstr processname  finds PID of a started process
Taskkill /pid PID /F – kills a process by PID
Taskkill /t /im processname /F – kills a process with its children (/t)
Taskkill /FI "memusage gt 102400" /F – kills RAM processes which size is less than100Mb

=Services=
Sc queryex servicename finds PID of an installed service
Sc config servicename start= disabled - change service startup type
Sc config servicename start= auto - change service startup type
=Sessions=
Query session /SERVER:server – queries sessions for PID
Quser /SERVER:server queries sessions + info of a user’s logon time
Reset session PID /SERVER:server – kills session by PID
Rwinsta PID /SERVER:server – kills session by PID
Logoff PID /SERVER:server – kills session by PID
For /F "Tokens=*" %a in (Servers.txt) Do Logoff – kills sessions named in a text file

NTFS Permissions
takeown /f D:\test /A /R /D Y
– forcibly (/f) grants ownership to the Admins group (/A) recursively (/R) with Yes answer (/D Y). Can use UNC path.
iCacls D:\test /setowner "Administrators" /T /C – also grants ownership
iCacls D:\test /grant Administrators:(OI)(CI)M /F /T /C – grants modify permissions
iCacls D:\test /remove "Administrators" /T /C – recursively removes user permissions from folder hierarchy
‘All Previous commands’ | find /I “denied” >> C:\err.log – makes log file

Windows Update troubleshooting
Wuauclt /resetauthorization /detectnow /updatenow
Net stop wuauserv => del C:\Windows\SoftwareDistribution => start
Netsh winhttp reset proxy
WSReset.exe
– clears & resets Windows Store cache on Win8.1/10

Network
=Basic commands=
Ipconfig /renew
Renew the IP address for the specified adapter
Ipconfig /flushdns Purges the DNS Resolver cache
Ping hostname shows IP by given host name (ICMP echo request)
Ping –a 10.10.10.10 shows host name by given IP
Tracert hostname traces path by given IP
Pathping hostname traces path by given IP + localhost + statistics
=Checking MAC address=
Getmac
shows MAC address of a local computer
Getmac /s server MAC address of a remote computer
Ping Server (then) Arp -a MAC address of a remote computer
=DNS commands=
Nslookup computer – DNS info about some host (external command)
> server 4.4.8.8
– changes DNS server to be used (internal command)
Nslookup –q=MX <host> <DNS server> – changes default record type
Dnscmd server /statistics > D:\filename – DNS info

Netstat commands
Netstat
Netstat -a
adds UDP ports
Netstat -o
shows PID (not in Win2000)


Netstat -b displays involved EXE files
Netstat -ao shows TCP/UDP ports and PIDs
Netstat –n 5
shows output every 5 seconds
Netstat –a | find "135" shows process that listens on port 135
Netstat –a | find "established" shows established process
(possible parameters: listening/established/time_wait/close_wait)
Netstat –ao | find “192.168”
– shows processes with PID

Netsh commands

Netsh winsock reset
resets IP stack
Netsh int ip reset anyfile.txt resets IP stack
Netsh advf set allp state off – disable FW with CMD
Netsh interface tcp show global – general TCP info
Netsh –r interface ip show interfaces local info about net interfaces
Netsh –r server interface ip show interfaces remote interfaces info
=Solving network speed problems=
Netsh interface tcp set global autotuning=disabled
Netsh interface tcp set global autotuning=normal
Netsh interface tcp set global rss=disabled
Netsh interface tcp set global rss=enabled

Additional commands

=Change startup type of any service from CMD=
sc config servicename start= disabled
sc config servicename start= auto
=Syncing computer time with DC=
w32tm /config /syncfromflags:domhier /update
Then run:
net stop w32time
net start w32time
forfiles –p C:\Share\ -s –m *.* -d -1 –c “CMD /C del /Q /F /s @path” – delete files by date

Active Directory
Gpupdate /force – update of domain GP on a local computer
Gpedit.msc 
– Group Policy editor on a local GP
Secpol.msc 
 security hive of local GP
Repadmin /showrepl– shows AD replication
Repadmin /syncall Server.dom.com – activates AD replication
Ldp.exe– GUI view on Active Directory

Nltest /query /SERVER:server – queries netlogon service status
Nltest /SERVER:server /finduser:username – user Domain & DC Nltest /DCLIST:Domain – list of DCs in Domain
Nltest /DSGETDC:Domain –  DC authenticated the *Computer*
Set logonserver – DC authenticated the *User*
Echo %logonserver% – DC authenticated the *User*

Exchange commands (needs Exchange Powershell)
=Show all organizational databases=
Get-MailboxDatabase –STATUS
Get-MailboxDatabase –STATUS | format-table name,mounted,backupinprogress,onlinemaintenanceprogress
Get-MailboxDatabase – STATUS | select servername,name,databasesize
Get-MailboxDatabase – STATUS | select servername,name,databasesize | Sort-Object Name -Descending
Get-MailboxDatabase – STATUS | select servername,name,databasesize | Sort-Object DatabaseSize –Descending
=Show databases on the particular Exchange Server=
Get-MailboxDatabase –SERVER servername
Get-MailboxDatabase –SERVER servername –Status | format-table name,mounted,backupinprogress
Get-MailboxDatabaseCopyStatus –SERVER  servername
=Check status of the particular database=
Get-MailboxDatabase dbname
=Check the date of Exchange Last Full Backup=
Get-MailboxServer | Get-MailboxDatabaseCopyStatus | ft name,latestfull*
Get-MailboxDatabase –SERVER server  -status | fl name, *fullbackup

=How to add Windows Backup feature=
Import-Module ServerManager
Add-WindowsFeature Backup

Nltest или как обновить членство компьютера в Домене без рестарта

Все системные администраторы, и даже техники, знают, как присоединить компьютер к домену и как его из него вывести. Но иногда компьютер может самостоятельно выйти из домена. Это может произойти из-за долгого бездействия, а также в случае восстановления из резервной копии.

сообщение о потери доверия между компьютером и доменом

Обычно для возврата компьютера в домен используется стандартный метод - его выводят из домена, а затем вновь присоединяют. Но этот метод имеет два недостатка: во-первых, для его выполнения необходимо сделать две перезагрузки, а во-вторых, компьютер получает новый SID, теряя старый, что может привести к потере членства в группах и иметь нежелательные последствия.

Другими словами, мы ищем метод восстановления членства компьютера в домене, который бы не требовал перезагрузки и не приводил к потере исходного SID.

Netdom
Существует утилита Netdom, которая может выполнить эту задачу, однако, по умолчанию она находится только на контроллерах домена. Также она может быть установлена на компьютерах администраторов в составе пакета RSAT, но, вероятно, отсутствует на пользовательских компьютерах. Ниже приведен пример синтаксиса команды.

Netdom resetpwd /Server:DomainController /UserD:Administrator /PasswordD:Password
Netdom reset MachineName /domain DomainName /User0 UserName /Password0 

Server - имя любого доменного контроллера
UserD - имя учетной записи администратора домена
PasswordD - пароль администратора домена

Dsmod
Как правило, утилита Dsmod не установлена на пользовательских компьютерах по умолчанию.

Nltest
Для решения данной задачи удобнее использовать утилиту Nltest, которая доступна на любом пользовательском компьютере.

Nltest /query (проверяет соединение с доменом);

Nltest /sc_reset:Domain.com 
или
Nltest /sc_reset:Domain.com /Server:ServerName (сбрасывает учетную запись 
компьютера в домене);

Nltest /sc_change_pwd:Domain.com (изменяет пароль компьютера);

Важно учитывать, что утилита Nltest работает в контексте пользователя, который ее запустил. Поэтому необходимо запускать ее от имени администратора на соответствующей рабочей станции.

PowerShell
PowerShell является стандартом на современных компьютерах. Однако, ее запуск может занимать несколько секунд больше, чем запуск CMD.

Test-ComputerSecureChannel  (команда тестирует защищенный канал)

Test-ComputerSecureChannel -Server DomainController -Credential Domain\Admin -Repair (команда сбрасывает учетную запись компьютера и защищенный канал.)

Reset-ComputerMachinePassword -Server DomainController -Credential Domain\Admin

Reset-ComputerMachineChannel -Server DomainController -Credential Domain\Admin

Две последние команды доступны только на компьютерах с установленной операционной системой Windows 8 и Server 2012 или более новыми версиями, поскольку они требуют наличия PowerShell 3.0.

вторник, 8 мая 2018 г.

Taking ownership and giving permissions to files and folders

Тем, кто имеет небольшой домашний опыт, задача - дать пользователю permissions (разрешения) на папочку - может показаться не такой уж сложной.
Но что, если означенная папочка громадна и содержит десятки/сотни тысяч файлов.
А в добавок вы не имеете доступа к самой папочке и подпапочкам. Да к тому же, все это хозяйство находится на файлере (например, Netapp Storage), который прикидывается Windows 2000. И permissions подпорчены одним умелым сисадмином, который однажды дал их сам себе, не подумав о других администраторах.
Уже веселее?

Итак, что нужно сделать первым делом? Конечно, дать себе самому ownership.
Как? Из GUI - не вариант, поскольку придется много тысяч раз кликать мышкой для подтверждения. Ну, разве что, вы хотите развить мускулатуру указательного пальца правой руки или же вам по приколу получить преждевременного Паркинсона.

Для этого существует команда Takeown (а также некоторые другие, например, iCacls с соответствующим параметром).
Takeown /f "\\Netapp\Documents\*" /r /d Y
Related image
/f - force
/r - recursive
/d Y - отвечать Yes на все вопросы
* - все папки и файлы под папкой "Documents".

Теперь у вас есть разрешения давать разрешения!
Если до этого момента все удалось, можно применить команду iCacls.
iCacls /f "\\Netapp\Documents\*" /grant "domain\user":(OI)(CI)M /T /C /Q

Все бы хорошо, но проблема в том, что в сложных случаях гладкий результат не всегда гарантирован, несмотря на все ухищрения. Здесь и Access Denied
Image result for takeown the data area passed to a system call
и слишком многоуровневые вложения папок в папки, превышающие 255 символов, и другие проблемы.

Например, после положительного ответа на запрос системы после выполнения Takeown 
Related image
вы можете получить неожиданное сообщение:
Error: the data area passed to a system call is to small

Есть шанс, что более сильным инструментом является SubInACL.
Пример:
First we took the root folder ownership using following
subinacl /file “PATH” /setowner=AdministratorsLater we use following switches to take the ownership on all subfolders & files.
subinacl /subdirectories “PATH*.*”  /setowner=Administrators

После детальной проверки, я сообщу вам о полученных результатах.

Существуют также GUI инструменты, которые любят многие администраторы, например бесплатный TakeOwnershipPro:
https://www.top-password.com/take-ownership-pro.html


Программа делает только одно дело - дает вам Ownership, но зато делает это неплохо:
сетевые shares ей под силу и она не затыкается даже на очень больших директориях

Reset NTFS file permissions

More developed program is NTFS Permissions Tools_1.16_Beta from Chinese programmer.

Но, если ваша фирма Enterprise, она может не доверять бесплатным инструментам, которые не дают никакой гарантии исправной работы, и фирме, возможно, придется раскошелиться на покупку платного инструмента посторонней фирмы, например, Security Explorer фирмы Quest или ADManager Plus фирмы ManageEngine:
https://www.manageengine.com/products/ad-manager/active-directory-ntfs-permissions-management.html