Чтобы повысить скорость выполнения вашего PowerShell скрипта, можно рассмотреть несколько подходов и оптимизаций:
### 1. Использование `PSSession`
Как вы правильно заметили, при запуске из разных скриптов сессия `PSSession` не сохраняется. Чтобы избежать многократной авторизации и ускорить выполнение разнесите создание сессии и выполнение команд на одной машине:
```powershell
# Скрипт 1: Создание сессии и сохранение в переменной
$username = 'keksxj'
$password = 'пароль'
$secpw = ConvertTo-SecureString $password -AsPlainText -Force
$cred = New-Object Management.Automation.PSCredential ($username, $secpw)
$s = New-PSSession -VMName 'app' -Credential $cred
# Сохраняем сессию в файл, чтобы использовать повторно
$s | Export-Clixml -Path "C:\path\to\session.xml"
# Убедитесь, что в конце работы вы закрываете сессию
# Remove-PSSession $s
```
```powershell
# Скрипт 2: Использование сохраненной сессии
$s = Import-Clixml -Path "C:\path\to\session.xml"
Invoke-Command -Session $s {C:\Users\keksxj\Desktop\way\mainzapusk.ps1}
```
### 2. Избегайте частого создания сессий
Если скрипты запускаются часто, подумайте о том, чтобы создавать сессию один раз и использовать её повторно, вместо того чтобы каждый раз создавать новую сессию.
### 3. Используйте `-NoNewWindow` для запуска GUI приложений
Если `mainzapusk.ps1` запускает GUI приложение, проверьте, можно ли его запустить в фоновом режиме без создания нового окна или интерфейса, используя опцию `-NoNewWindow`.
### 4. Оптимизация самого скрипта `mainzapusk.ps1`
Посмотрите, нет ли в `mainzapusk.ps1` мест, где можно оптимизировать выполнение (удаление лишних вызовов, оптимизация кода и т.д.).
### 5. Используйте Task Scheduler
Если нужно запускать скрипт по расписанию, может быть проще настроить его выполнение через Task Scheduler, а затем вызывать этот таск из PowerShell, избегая посвящения кода в самом удаленном экземпляре.
### 6. Храните креденшалы безопасно
Вы также можете использовать `Get-Credential` для безопасного хранения учётных данных и использовать их при дальнейшем обращении к удаленной машине:
```powershell
$cred = Get-Credential
```
### 7. Сетевые проблемы
Если удаленный хост медленно отвечает, вы также можете столкнуться с проблемами на уровне сети. Убедитесь, что скорость сети и её стабильность достаточно высока.
### Заключение
Не существует единственного решения для всех сценариев, поэтому стоит поэкспериментировать с различными подходами и протестировать результаты. Возможно, сочетание нескольких методов приведет к значительному улучшению производительности.