Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
 Аватар для ViterAlex
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246

Выполнение скрипта на удалённой машине

02.05.2018, 13:02. Показов 4579. Ответов 9

Студворк — интернет-сервис помощи студентам
Как составить файл скрипта, чтобы при его запуске запрашивался логин/пароль на открытие удалённой сессии, затем выполнялось основное тело скрипта и осуществлялся выход из удалённой сессии?
По отдельности я это могу делать:
  1. Открываем сессию
    PowerShell
    1
    
    Enter-PSSession -ComputerName ServerName -Credential userName
  2. Выполняются какие-то действия
  3. Закрываем сессию:
    PowerShell
    1
    
    Exit-PSSession
И вот нужно сделать это в виде одного файла скрипта с запросом логина/пароля
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.05.2018, 13:02
Ответы с готовыми решениями:

Выполнение скрипта на удалённой машине
Не получается выполнить скрипт на удаленном сервере от другого пользователя: invoke-command -ComputerName server01 -ScriptBlock {....

Добавление сетевого принтера на удаленной машине
Всем привет! интересует такой вопрос - можно ли средствами powershell удаленно устанавливать сетевые принтеры. Например - есть принтсервер...

Возможно ли проверить, подключен ли к удаленной машине ключ etoken?
Доброго дня всем. Подскажите, возможно ли проверить, подключен ли к удаленной машине ключ etoken? Пытаюсь провернуть все через...

9
Любознательный
 Аватар для YuS_2
7406 / 2256 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
02.05.2018, 13:18
Цитата Сообщение от ViterAlex Посмотреть сообщение
нужно сделать это в виде одного файла скрипта с запросом логина/пароля
PowerShell
1
man get-credential -full
1
 Аватар для ViterAlex
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
02.05.2018, 13:42  [ТС]
YuS_2, с логином/паролем понятно. Однако основной скрипт всё равно выполняется локально и, естественно, вызывает ошибки. Например:
PowerShell
1
2
3
4
5
6
7
8
9
#Запрос логина/пароля
$Cred = Get-Credential
#Вход на удалённую машину
Enter-PSSession -ComputerName storsrv -Credential $Cred
#Основной блок
get-aduser -filter * -properties lastlogon | where Enabled | select @{Name="Имя пользователя";Expression={$.Name}}, `
@{Name="Время последнего входа";Expression={([datetime]::FromFileTime($_.LastLogon))}} | format-table
#Выход
Exit-PSSession
Такое ощущение, что сессия не успевает открыться, а код уже выполняется
0
Любознательный
 Аватар для YuS_2
7406 / 2256 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
02.05.2018, 13:52
Цитата Сообщение от ViterAlex Посмотреть сообщение
Однако основной скрипт всё равно выполняется локально
PowerShell
1
man invoke-command -full
1
 Аватар для ViterAlex
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
02.05.2018, 13:56  [ТС]
YuS_2, да, спасибо. Разобрался. Кроме того, нужно использовать New-PSSession, т.к. Enter-PSSession — это интерактивный режим.
Примерно так получается:
PowerShell
1
2
3
4
5
6
7
8
9
10
11
#Запрос логина/пароля
$Cred = Get-Credential
#Вход на удалённую машину
$session = New-PSSession -ComputerName storsrv -Credential $Cred
#Основной блок
Invoke-Command -Session $session -ScriptBlock{
get-aduser -filter * -properties lastlogon | where Enabled | select @{Name="Имя пользователя";Expression={$.Name}}, `
@{Name="Время последнего входа";Expression={([datetime]::FromFileTime($_.LastLogon))}} | format-table
}
#Выход
Remove-PSSession -Session $session
Только кириллица слетает.
0
Любознательный
 Аватар для YuS_2
7406 / 2256 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
02.05.2018, 14:02
Цитата Сообщение от ViterAlex Посмотреть сообщение
Только кириллица слетает.
Куда слетает? В смысле как проявляется?
Ну и кодировку скрипта проверьте...
0
 Аватар для ViterAlex
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
02.05.2018, 14:13  [ТС]
PowerShell
1
2
3
4
5
6
7
8
Р?РјСЏ пользователя Время последнего РІС…РѕРґР°
------------------------------- ------------------------------------------
                                02.05.2018 14:14:15
                                18.04.2018 13:50:04
                                27.04.2018 18:16:19
                                27.04.2018 18:36:34
                                21.03.2018 14:47:04
                                02.05.2018 13:26:30
вот такая фигня получается. Файл скрипта в UTF-8
0
Любознательный
 Аватар для YuS_2
7406 / 2256 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
02.05.2018, 14:28
Цитата Сообщение от ViterAlex Посмотреть сообщение
Файл скрипта в UTF-8
А версия powershell? Если ниже 6.0 (а это скорее всего так и есть), то кодировку необходимо поменять на 1251
1
 Аватар для ViterAlex
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
02.05.2018, 14:59  [ТС]
YuS_2, версия PS 5.1. Исправил кодировку файла на windows-1251 и теперь всё хорошо
Окончательный вид скрипта (подключается к контроллеру домена и выводит время последнего входа в домен всех активных пользователей):
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
$script={
            get-aduser -filter * -properties lastlogon | where Enabled | select @{Name="Имя пользователя";Expression={$_.Name}}, `
            @{Name="Дата последнего входа";Expression={([datetime]::FromFileTime($_.LastLogon))}} | format-table
        }
#Запрос логина/пароля
$Cred = Get-Credential -Verbose:$false
#Вход на удалённую машину
$session = New-PSSession -ComputerName storsrv -Credential $Cred
#Основной блок
Invoke-Command -Session $session -ScriptBlock $script
#Выход
Remove-PSSession -Session $session
Read-Host -Prompt "Press any key to exit"
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
03.05.2018, 13:15
Цитата Сообщение от ViterAlex Посмотреть сообщение
Окончательный вид скрипта
Этот скрипт может обойтись и без New-PSSession и Remove-PSSession.

PowerShell
1
2
3
4
5
6
7
8
9
$ScriptBlock = 
{
    Get-ADUser -Filter {Enabled -eq $true} -properties lastlogon | select @{Name="Имя пользователя";Expression={$_.Name}},
    @{Name="Дата последнего входа";Expression={([datetime]::FromFileTime($_.LastLogon))}} | ft
}
 
$Cred = Get-Credential -Verbose:$false
Invoke-Command -ScriptBlock $ScriptBlock -ComputerName $DC -Credential $Cred
Read-Host -Prompt "Press Enter to exit"
А если на клиентский ПК поставить PS-оснастку для AD, тогда и без Invoke-Command

PowerShell
1
Get-ADUser -Filter {Enabled -eq $true} -properties lastlogon -Server $DC -Credential $Cred
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.05.2018, 13:15
Помогаю со студенческими работами здесь

Выполнение GCC на удаленной машине по SSH
Установил (с помощью Cygwin) и настроил на своей Windows машине OpenSSH, установил GCC и все остальные прибамбасы, добавил пути в системную...

Запуск WinRM на удаленной машине
Вот, собственно какие варианты возможны для запуска WinRM на удаленной машине. Спасибо!

Как на удаленной машине зайти по сети в компьютер?
Добрый день всем! Как на удаленной машине зайти по сети в компьютер из той же сети, не зная логина и пароля? Ситуация такая: бухгалтер...

Выполнение локального скрипта на удаленной машине средствами Expect, Bash, SSH
Уважаемые знатоки! Есть задача, выполнить небольшой скрипт на удаленных машинах. Соединение ssh с машинами проходит средствами expect...

Время на удаленной машине
Доброго времени суток! Необходимо получать время на удаленной машине, что использовать для этого, какие есть способы?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru