Скрипт PowerShell для удаленного выполнения командлетов

Авторизация



Теги сайта



0х0000007b 1c access control list acl activation active directory ad roles add route adexplorer apache authentication to zabbix bare metal recovery bg zsh bicycle books bruteforce centos centos packet certificate change net adapter name chap chkrootkit chmod cisco class clipboard cmd configuring cpu cores cron crontab csc custom object cut cvsup cvsup-without-gui db dekorator dev null 2 1 dhcp dhcp reservation digitally signing script disable ipv6 diskpart dism django dns domain naming master domain roles download download powershell enabled encapsulation english english language esx eventlog fail2ban fastest_cvsup fedora fg zsh field formatdatabase freebsd fsmo get-aduser hardware https hyper-v idioms iis info php inheritance iperf iptables iscsi jobs kernel panic ldap ldap аутентификация zabbix limit lingualeo linux malware posix mcitp mcsa mcse memory check method microsoft mod_ssl mount mssql mysql mysql user password netcache network network config network load balance cluster network scripts nginx nlb num lock numlock oop openssl pap partition pdc permissions pfx php pipeline pkg_version polymorphism ports upgrade portupgrade posix powershell ppp puppet pwdlastset python rdp regedit registry remote enable restrictions reverse proxy rhel rid rope jumping bridge мост прыжок высота route add route freebsd routing protocol rpm sc sc sdset sc sdshow schema scope script output secure web security services set dns servers set ip address sftp shell script show variables snmp sound scheme sounds speed ssh ssl standard-supfile supfile switch switchport sync syncronization task sсheduler tempdb transfer role tripplite monitoring tweaks unix user must change password at next logon utf8 vim vlan vmware w32tm web windows windows 2003 r2 windows 2008 r2 windows firewall windows server windows server 2012 windows server backup windows service permissions windows пингалка winre wsus xargs yum zabbix zabbix external check zabbix ldap authentication zsh автоматическое обновление портов freebsd автономные файлы активация английский язык база данных безопасность active directory буфер вело велосипед видео внешняя проверка zabbix вредоносное программное обеспечение posix задание двумерного массива захват ролей dc звуки звуковая схема идиомы иероглифы киев кодировка командная строка конфигурация сети маршрутизация маршруты в freebsd маршруты в redhat linux область обновление портов ограничения windows основные команды пакеты centos перевод передача ролей dc перенос планировщик задач подписываем сценарий powershell покатушки полет над днепром проблемы кодировки протокол путь развития в it разрешения служб windows регистрируем cmd скриптом недоступность хоста реестр резервирование ip скриптом роли домена русские символы синхронизация скачать скачать powershell скачать книгу скорость сети списки контроля доступа тарзанка твики фоновые процессы цикл mssql

Главная страница Microsoft POWERSHELL Скрипт PowerShell для удаленного выполнения командлетов
Скрипт PowerShell для удаленного выполнения командлетов Печать
Import-Module ActiveDirectory # Импортируем модуль
Write-Host
Write-Host 'Original and comments: http://vam.in.ua/index.php/it/25-ms-powershell/195-powershell-script-executing-on-remote-computers.html' -ForegroundColor DarkCyan
Write-Host 'Feedback: http://vam.in.ua/index.php/contacts/2-admins/1-aleksey.html' -ForegroundColor DarkCyan
Write-Host
    

$script:servers = Get-ADComputer -Filter * -Properties OperatingSystem | ? {($_.OperatingSystem -match ".*?(server).*?") -and ($_.Enabled -eq "True")} # Получить из ActiveDirectory все незаблокированные серверы 2008 и 2008 R2
$script:selectedServers = ($servers | Out-GridView -Title "Select servers" -PassThru -ErrorAction Stop) # Дать возможность вручную выбрать необходимые сервера. Для этой функции необходима установленная платформа PowerShell_ISE

foreach ($srvr in $selectedServers) # Для каждого сервера из списка выбранных серверов выполнить
{
    [string]$script:currentSRVname = ($srvr).DNSHostName
    [string]$script:currentOperatingSystem = ($srvr).OperatingSystem
    if (Test-Connection -ComputerName $currentSRVname -Count 3 -ErrorAction SilentlyContinue) # Если проходит Echo-request по DNS
    {
        if ($currentOperatingSystem -match ".*?(server).*?(2012).*?") # Если операционная система Windows Server 2012
        {
            # Выполнить для 2012
        }
        if ($currentOperatingSystem -match ".*?(server).*?(2008).*?(r2).*?") # Если операционная система Windows Server 2008 R2
        {
            # Выполнить для 2008 R2
            Invoke-Command -ComputerName $currentSRVname -ScriptBlock {&netstat -ano | findstr -i 3389} # Пример выполения команд на удаленном хосте. Добавление ключа -AsJob выполнит скрипт-блок в качестве фонового задания
        }
        if ( ($currentOperatingSystem -match ".*?(server).*?(2008).*?") -and ($currentOperatingSystem -notmatch ".*?(server).*?(2008).*?(r2).*?") ) # Если операционная система Windows Server 2008
        {
            if ((Get-WmiObject Win32_OperatingSystem -computer $currentSRVname).OSArchitecture -match ".*?(64).*?" ) # Если операционная система 64 бит
            {
                # Выполнить для 2008 x64
            }
            if ((Get-WmiObject Win32_OperatingSystem -computer $currentSRVname).OSArchitecture -match ".*?(32).*?" ) # Если операционная система 32 бит
            {
                # Выполнить для 2008 x86
            }
        }
        if ($currentOperatingSystem -match ".*?(server).*?(2003).*?") # Если операционная система Windows Server 2003
        {
            if ((Get-WmiObject Win32_OperatingSystem -computer $currentSRVname).OSArchitecture -match ".*?(64).*?" ) # Если операционная система 64 бит
            {
                # Выполнить для 2003 x64
            }
            if ((Get-WmiObject Win32_OperatingSystem -computer $currentSRVname).OSArchitecture -match ".*?(32).*?" ) # Если операционная система 32 бит
            {
                # Выполнить для 2003 x86
            }
        }
    } else # Если не проходит Echo-request по DNS
    {
        Write-Host "Server $currentSRVname is unreachable" -ForegroundColor DarkRed # Оповещаем о недоступном компьютере
    }
}

Комментарии:

 

КОММЕНТАРИИ 

 
#2 Dev_LC 13.11.2015 09:20
Цитирую Volodymyr:
1) не понял, а какая конкретно команда выполняется и где - на серверах (тот который будет выбран по условиям?)
2) этот скрипт должен дать возможность выполняться удаленным командам на серверах?


Для того чтобы скрипт сработал, его нужно обязательно запускать из оболочки ISE (для выбора серверов).

Какая команда будет выполняться - это выбираете вы и вписываете на место строки "# Выполнить для 20____".
Для примера в блоке "# Выполнить для 2008 R2" уже есть команда по получению состояния порта RDP на удаленных компьютерах. Т.е. вы можете для начала запустить скрипт из ISE с соответствующим и AD правами, выбрать какой-нибудь сервер версии 2008 R2 и посмотреть результат
 
 
#1 Volodymyr 12.11.2015 22:48
1) не понял, а какая конкретно команда выполняется и где - на серверах (тот который будет выбран по условиям?)
2) этот скрипт должен дать возможность выполняться удаленным командам на серверах?
 
Главная страница Microsoft POWERSHELL Скрипт PowerShell для удаленного выполнения командлетов