Перейти к содержимому

Как завершить сессию на всех серверах в локальной сети.

Проблема при смене пароля на серверах остались отключенные сессии . Из-за этого блокируется учётная запись. Надо сессию завершить на всех серверах . но так как серверов больше 500 в ручную делать это негуманно к себе.

вот скрипт . Запускается от пользователя которого надо завершить

param (
        #get current logged on username
        [string]$UserName = $env:USERNAME
    )

    # Импортировать модуль Active Directory для Get-ADComputer CmdLet
    Import-Module ActiveDirectory


    # Запрос Active Directory для включенных учетных записей компьютеров серверов Windows и сортировка по имени
    $Servers = Get-ADComputer -Filter {(OperatingSystem -like "*windows*server*") -and (Enabled -eq "True")} | Sort Name

    
# Инициирующие переменные
    $SessionList = $NULL
    
Читать далее

Как вывести список пользователей которые состоят в группе.

Задача вывести пользователей из определенной группы , но. Группа имеет в себе пользователей из разных лесов домена.

И по этому команда  Get-ADGroupMember “1c Base ZUP(Zup_TE)” не работает . пишет ошибка :

Get-ADGroupMember : Произошла неопределенная ошибка
строка:1 знак:1
+ Get-ADGroupMember "1c Base ZUP(Zup_TE)"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (1c Base ZUP(Zup_TE):ADGroup) [Get-ADGroupMember], ADException
    + FullyQualifiedErrorId : ActiveDirectoryServer:0,Microsoft.ActiveDirectory.Management.Commands.GetADGroupMember



Get-ADGroupMember : The operation completed successfully
At line:1 char:1
+ Get-ADGroupMember -Identity "1c Base ZUP(Zup_TE)" | foreach { Get-ADUser $_ -Pro ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (1c Base ZUP(Zup_TE):ADGroup) [Get-ADGroupMember], ADException
    + FullyQualifiedErrorId : The operation completed successfully,Microsoft.ActiveDirectory.Management.Commands.GetAD
   GroupMember

Пошел … Читать далее

RDSH терминальная ферма Как посмотреть кому принадлежат диски профиля пользователя на Windows Server 2012 R2 / 2016 RDS

На ферме RDS ферме используем для профилей пользователей виртуальные диски.

RDSH терминальная ферма Как посмотреть кому принадлежат диски профиля пользователя на Windows Server 2012 R2 / 2016 RDS

Что бы узнать человеческое название профилей используем скрипт

$UPDShare = $args[0]
$fc = new-object -com scripting.filesystemobject
$folder = $fc.getfolder($UPDShare)
"Username,SiD" >> export.csv
foreach ($i in $folder.files)
{
  $sid = $i.Name
  $sid = $sid.Substring(5,$sid.Length-10)
  if ($sid -ne "template")
  {
    $securityidentifier = new-object security.principal.securityidentifier $sid
    $user = ( $securityidentifier.translate( [security.principal.ntaccount] ) )
    $user,$i.Name -join "," >> export.csv
  }
}
$a = Import-Csv export.csv
$a

запускать

.\ShowUPDFolderDetails E:\UserProfileDisks

Результат

RDSH терминальная ферма Как посмотреть кому принадлежат диски профиля пользователя на Windows Server 2012 R2 / 2016 RDS

 

Как сбросить терминальные сессии на терминальной ферме RDS windows 2012-2016 без прав администратора

Задача дать поддержке права для сброса сессии с фермы терминалов RDS.

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

Назавём её Terminal Servers Administrators

Теперь делаем скрипт и добавляем в него наши хосты фермы и группу которую сделали

$Group = "domen\Terminal Servers Administrators"
$Servers = @(
   "Host-RDSH1", 
"Host-RDSH2",
"Host-RDSH3",
"Host-RDSH4",
"Host-RDSH5"
)
ForEach ($Server in $Servers) {
    #Делегируем право на теневые сессии
    $WMIHandles = Get-WmiObject `
        -Class "Win32_TSPermissionsSetting" `
        -Namespace "root\CIMV2\terminalservices" `
        -ComputerName $Server `
        -Authentication PacketPrivacy `
        -Impersonation Impersonate
    ForEach($WMIHandle in $WMIHandles)
    {
        If ($WMIHandle.TerminalName -eq "RDP-Tcp")
        {
        $retVal = $WMIHandle.AddAccount($Group, 2)
        
Читать далее

Как сбросить завсшию службу или когда она в состоянии стоп(stoped)

Проверим какие службы имеют статус stoped.

Get-WmiObject -Class win32_service | Where-Object {$_.state -eq 'stop pending'}

Теперь выполним скрипт. Он выяснит какой процесс блокирует и убьёт его. После этого служба остановится.

$Services = Get-WmiObject -Class win32_service -Filter "state = 'stop pending'"
if ($Services) {
foreach ($service in $Services) {
try {
Stop-Process -Id $service.processid -Force -PassThru -ErrorAction Stop
}
catch {
Write-Warning -Message " Error. Error details: $_.Exception.Message"
}
}
}
else {
Write-Output "No services with 'Stopping'.status"
}

 

Как найти в таблице sp_whoisactive по времени выполнения запроса.

SELECT [dd hh:mm:ss.mss]
,[start_time]
 ,[collection_time]
      ,[session_id]
      ,[sql_text]
      ,[sql_command]
      ,[login_name]
      ,[wait_info]
      ,[tran_log_writes]
      ,[CPU]
      ,[tempdb_allocations]
      ,[tempdb_current]
      ,[blocking_session_id]
      ,[reads]
      ,[writes]
      ,[physical_reads]
      ,[query_plan]
      ,[used_memory]
      ,[status]
      ,[tran_start_time]
      ,[open_tran_count]
      ,[percent_complete]
      ,[host_name]
      ,[database_name]
      ,[program_name]
      
      ,[login_time]
      ,[request_id]
      ,[collection_time]
  FROM [DBAtools].[dbo].[WhoIsActive]
  WHERE 
 CONVERT(CHAR(8),COLLECTION_time,8) BETWEEN '00:00:00' AND '23:00:00' AND
       datepart(YEAR,start_time) BETWEEN 2020 AND 2020 and
       datepart(month,start_time) BETWEEN 04 AND 04 and
       datepart(day,start_time) BETWEEN 22 AND 23
     and  [dd hh:mm:ss.mss]  > '00 01:00:00.0000'

 

Как снимать нагрузку c дисков с помощью zabbix. Iops. Windows Disk performance.

Задача снимать нагрузку на дисках на серверах.

У нас используется zabbix 4.2

Есть готовые шаблоны

https://share.zabbix.com/operating-systems/windows/windows-physical-drive-iops но проблема что этот шаблон не подходит под windows 2016. И править его сложно так как команды зашифрованы.

За основу взял https://share.zabbix.com/operating-systems/windows/windows-disk-performance. Но шаблон для 4.4.

Я взял шаблон windows-physical-drive-iops и его исправил для использования скрипта  из windows-disk-performance

Выкладываю сюда шаблон и скрипт

Windows iops 2016

Как снимать нагрузку c дисков с помощью zabbix. Iops. Windows Disk performance.

Как снимать нагрузку c дисков с помощью zabbix. Iops. Windows Disk performance.

Как делегировать права управления терминальных сессий не давая полные права на сервер в windows 2012/16

Задача дать поддержки права для сбрасывание . подключения к сессиям пользователя на ферме rdp . ферма развернута на базе windows 2016.

Создаём группу в АД Terminal Servers Administrators . Помещаем пользователей поддержки в эту группу.

Создаём группу MSK-HW-RDCB1 Users и добавляем в неё Terminal Servers Administrators.

После этого группу MSK-HW-RDCB1 добавляем на Remote Desktop Users (Пользователи удаленного рабочего стола ) на каждом сервере фермы и в колекцию

Как делегировать права управления терминальных сессий не давая полные права на сервер в windows 2012/16

Теперь выполним скрипт на каждом сервере в cmd от администратора

wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TSPermissionsSetting WHERE (TerminalName ='RDP-Tcp')CALL AddAccount 'domen\Terminal Servers Administrators',2

или

$Group = "RDP_Operators"
$Servers = @(
    "RDSHost01",
    "RDSHost02",
    "RDSHost03"
)
ForEach 
Читать далее

Как исправить ошибку Failed to mount /sysroot linux

Мой узел не смог загрузиться после отключения питания, получил ошибку «Failed to mount /sysroot linux» и вошел в аварийный режим.

Мне помогло

sudo xfs_repair -v -L / dev / dm-0

Потом перезагрузил и заработало