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

powershell

Как сделать «Автоматическую установку Cisco Secure Client, .NET 8 и VMware Horizon Client с помощью PowerShell»

Задача сделать автоматическую установку на клиентах вне домена

  • Проверяет доступность серверов vdi.adminbd.ru и so.adminbd.ru.
  • Устанавливает/настраивает Cisco Secure Client (с профилем link_adminbd_ru.xml, ярлыком на общем рабочем столе и preferences.xml с BlockUntrustedServers=false).
  • Устанавливает .NET 8 Desktop Runtime (при необходимости).
  • Устанавливает VMware Horizon Client с параметром VDM_Server=vdi.adminbd.ru.
  • Логирует все действия в %TEMP%\vdi-client-setup.log.
  • Требует права администратора (автоматически перезапускается с повышением).
  • После завершения всех операций перезагружает компьютер (с подтверждением пользователя).
#requires -Version 3.0

<#
.SYNOPSIS
    Автоматическая установка и запуск VMware Horizon Client.
.DESCRIPTION
    Скрипт проверяет доступность сервера so.admindb.ru (репозиторий установщиков),
    при необходимости устанавливает Cisco Secure Client, .NET 8 Runtime
    и VMware Horizon Client, после чего 
Читать далее

Как сделать скрипт для восстановления баз данных из шары.

Задача раз 2 недели восстанавливать базы данных на dev сервер. Бэкап сделаны с помощью ola.hallengren

-- В ночь с субботы на воскресение
--if(datepart(weekday, getdate()) = 1)
-- Для миграции на АГ сметили создание резервных копий для того что бы использовать верфицированые фулл бэкапы в процессе работ
-- В ночь с Пятницу на субботу  (В Субботу в 01.00 создать фулл бекап)

if(datepart(weekday, getdate()) = 7)
begin
    EXECUTE [dbo].[DatabaseBackup]
    @Databases = 'USER_DATABASES,-%_restore',
    @Directory = N'\\ARC03.adminbd.ru\sql_backup$',
    @BackupType = 'FULL',
    @Verify = 'Y',
    @Compress = 'Y',
    @CleanupTime = 312,
    @CleanupMode = 'AFTER_BACKUP',
    @CheckSum = 'Y',
    @LogToTable = 'Y',
    @DatabasesInParallel= 'Y';
end

Скрипт восстановления

# 
Читать далее

Как завершить отключение сессии на серверах RDS и вывести список где пользователи не найдены на хостах но в брокере они есть.

 

 

# Функция для завершения RDP-сессии
function Invoke-RDPSessionLogoff {
    Param(
        [parameter(Mandatory=$True, Position=0)][String]$ComputerName,
        [parameter(Mandatory=$true, Position=1)][String]$SessionID
    )
    $ErrorActionPreference = "Stop"
    logoff $SessionID /server:$ComputerName /v 2>&1
}

# Функция для получения списка залогиненных пользователей
Function Get-LoggedOnUser {
    Param(
        [parameter(Mandatory=$True, Position=0)][String]$ComputerName="localhost"
    )
    $ErrorActionPreference = "Stop"
    Test-Connection $ComputerName -Count 1 | Out-Null
    quser /server:$ComputerName 2>&1 | Select-Object -Skip 1 | ForEach-Object {
        $CurrentLine = $_.Trim() -Replace "\s+"," " -Split "\s"
        $HashProps = @{
            UserName = $CurrentLine[0]
            ComputerName = $ComputerName
        }
        If ($CurrentLine[2] -eq "Disc") {
            $HashProps.SessionName = $null
            $HashProps.Id = $CurrentLine[1]
            $HashProps.State = $CurrentLine[2]
            $HashProps.IdleTime = $CurrentLine[3]
            $HashProps.LogonTime = $CurrentLine[4..6] -join " "
            $HashProps.LogonTime 
Читать далее

Как сделать проверку серверов на открытие портов , пинги и трасеровка хостов для технической поддержки.

Задача сделать для тп скрипт который опрашивает сервера по открытым портам , пингует их и делает tracert. И отправляет на почту результат.

# Добавьте в начало скрипта
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = { $true }

# Настройки Яндекс.Почты
$YandexTo = "moskvichev@yandex.ru" 
$YandexFrom = 'moskvichev@yandex.ru'
$YandexUser = "moskvichev@yandex.ru"
$YandexPass = "пароль из яндекс"
$YandexSmtpServer = 'smtp.yandex.ru'
$YandexPort = 587

# Получение информации о ПК и пользователе
$ComputerName = $env:COMPUTERNAME
$UserName = $env:USERNAME
$Domain = $env:USERDOMAIN

# Порты для проверки для каждого сервера
$ServerPorts = @{
    "vdi.adminbd.ru" = @(443)
    "zon01.adminbd.ru" = @(3389, 32111, 4172, 8443,443)
    "zon02.adminbd.ru" = @(3389, 32111, 4172, 8443,443)
}

# Функция для 
Читать далее

Как перенести активных пользователей из одной коллекции в другую windows rds

Задача перенести активных пользователей из одной коллекции rds в другую. Надо запросить у коллекции список пользователей и добавить в группу новой коллекции из старой удалить.

# Import required modules
Import-Module ActiveDirectory
Import-Module RemoteDesktop

# Define RDS collection and groups
$collectionName = "Rec"
$sourceGroup = "G-Rec"
$destinationGroup = "G-Rec-fslogix"
$userLimit = 1 # Количество пользователей для переноса

# Get active users from RDS collection
try {
    Write-Host "Getting active users from RDS collection '$collectionName'..."
    $activeSessions = Get-RDUserSession -CollectionName $collectionName -ConnectionBroker MSK-HWRDCB02.voxys.ru
    
    if (-not $activeSessions) {
        Write-Host "No active sessions found in collection."
        exit
    }
    
    $activeUsers = $activeSessions | Select-Object -ExpandProperty UserName 
Читать далее

Как перенести пользователей из одной группы в другую через powershell

# Define group names
$sourceGroup = "G-Rec"
$destinationGroup = "G-Rec-fslogix"

# Import Active Directory module
Import-Module ActiveDirectory

try {
    # Get members from source group (first 50)
    $users = Get-ADGroupMember -Identity $sourceGroup | Select-Object -First 50
    
    if ($users.Count -eq 0) {
        Write-Host "No users found in the source group."
        exit
    }
    
    Write-Host "Found $($users.Count) users in the source group. Processing..."
    
    # Add users to destination group
    Add-ADGroupMember -Identity $destinationGroup -Members $users -ErrorAction Stop
    Write-Host "Successfully added users to destination group $destinationGroup"
    
    # Remove users from source group
    Remove-ADGroupMember -Identity $sourceGroup -Members $users -Confirm:$false -ErrorAction Stop
    Write-Host "Successfully removed users from 
Читать далее

Как вывести список пользователей 1с какую лицензию hasp использует пользователь.

Задача вывести список пользователей что бы узнать какой ключ hasp используется.

$RPHostPath = Get-Process -Name rphost | Select-Object -ExpandProperty Path -First 1
$Actual1CFolder = Split-Path $RPHostPath
Set-Location $Actual1CFolder

$cluster = .\rac.exe cluster list | Where-Object { $_ -match 'cluster' } | ForEach-Object { $_ -replace "^.*?: " }

$sessions = .\rac.exe session --cluster=$cluster list --licenses

# Парсим вывод rac.exe и преобразуем в объекты PowerShell
$sessionObjects = @()
$currentSession = @{}

foreach ($line in $sessions) {
    if ($line -match '^session\s*:\s*(.+)') {
        if ($currentSession.Count -gt 0) {
            $sessionObjects += [PSCustomObject]$currentSession
            $currentSession = @{}
        }
        $currentSession['Session'] = $matches[1].Trim()
    }
    elseif ($line -match '^(.+?)\s*:\s*(.+)') 
Читать далее

Как разблокировать (unblock) файл скаченный из сети на серверах в ad

Задача разблокировать файл на определённых сервера

# Импортируем модуль ActiveDirectory, если он не установлен
if (-not (Get-Module -ListAvailable -Name ActiveDirectory)) {
    Install-Module -Name ActiveDirectory -Force
}
Import-Module ActiveDirectory
 
# Фильтруем компьютеры, которые являются серверами (например, по имени или OU)
$servers = Get-ADComputer -Filter {name -like "*HWRDS*"} -Property Name | Select-Object -ExpandProperty Name
 
# Список файлов для разблокировки
$filesToUnlock = @("Zone.exe") # Добавьте здесь нужные вам файлы
 
function UnBlock-FilesOnRemoteServers {
    param (
        [string[]]$servers,
        [string[]]$files
    )
 
    foreach ($server in $servers) {
        Write-Host "Processing server: $server"
         
        # Убедимся, что сервер доступен
        if (Test-Connection -ComputerName $server -Count 1 -Quiet) {
            foreach ($file in $files) 
Читать далее

Как скопировать файл на компьютеры из группы

Задача скопировать файл на пк которые находиться в группе

# Параметры
$sourceFile = "C:\1\nethasp.ini"
$destinationFolder = "C:\Program Files\1cv8\conf"
$adGroupName = "ComputerGroup"

# Проверка исходного файла
if (-not (Test-Path $sourceFile)) {
    Write-Host "❌ Ошибка: файл $sourceFile не найден!" -ForegroundColor Red
    exit 1
}

# Получаем список компьютеров из группы AD
try {
    $computers = Get-ADGroupMember -Identity $adGroupName | 
                 Where-Object { $_.objectClass -eq 'computer' } | 
                 Select-Object -ExpandProperty Name
    
    if (-not $computers) {
        Write-Host "❌ В группе '$adGroupName' нет компьютеров!" -ForegroundColor Red
        exit 1
    }
    Write-Host "✅ Найдено компьютеров: $($computers.Count)" -ForegroundColor Green
} catch {
    Write-Host "❌ Ошибка при получении списка из 
Читать далее

Как найти программу и версию с помощью powershell

Надо проверить установленную версию fslogix на серверах rds

<#
.SYNOPSIS
    Скрипт для проверки версий указанных программ на серверах AD с фильтрацией по имени
.DESCRIPTION
    Ищет указанную программу в реестре удаленных серверов и возвращает информацию о версии
.PARAMETER NameFilter
    Фильтр имен серверов (например, "*hwrdsh*")
.PARAMETER SoftwareName
    Название программы для поиска (например, "Microsoft FSLogix Apps")
.EXAMPLE
    .\Get-SoftwareVersionOnServers.ps1 -NameFilter "*hwrdsh*" -SoftwareName "Microsoft FSLogix Apps"
#>

param (
    [string]$NameFilter = "*hwrdsh*",
    [string]$SoftwareName = "Microsoft FSLogix Apps"
)

# Импорт модуля ActiveDirectory
try {
    Import-Module ActiveDirectory -ErrorAction Stop
}
catch {
    Write-Host "Ошибка при импорте модуля ActiveDirectory: $_" -ForegroundColor Red
    exit 1
}

# Функция 
Читать далее
Яндекс.Метрика