Все это похоже на ошибку, но я надеюсь, что кто-то может доказать, что я не прав.
PS версия: 5.1.17763.592
Я запускаю скрипт powershell из пути UNC сПараметр "-file" и "-NoExit".Это делается из приложения VB.net.VB.Net .exe запускается с правами администратора, сеанс Powershell также запускается с правами администратора.
Dim script_path As String = "-NoExit -ExecutionPolicy RemoteSigned -file \\PATH\Test.ps1"
Process.Start("Powershell", script_path)
Все это запускается нормально, но по неизвестной причине этот экземпляр Powershell не ведет себя так, как если быЯ должен был запустить powershell как администратор напрямую.Например:
Некоторая информация реестра не может быть найдена или возвращается иначе.
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Measure-Object
Возвращает 116 в экземпляре "-file", 36 в стандартном экземпляре.
cd "HKLM:\SOFTWARE\Microsoft\SMS\Mobile Client\Software Distribution\Execution History\"
Возвращает не найденный экземпляр -file, но он существует.Я нашел несколько ключей реестра, подобных этому.
В этом экземпляре доступно на 13 модулей меньше (Get-Module -ListAvailable | Measure-Object
), некоторые командлеты не могут быть запущены, например Get-LocalUser
.
Этоиз-за того, что я чувствую себя так, будто я удаленно подключен к другому компьютеру.
Один и тот же компьютер, один и тот же пользователь, оба PowerShell запускаются с правами администратора.
Я пробовал:
- Запуск из локального каталога (не UNC)
- Удалить параметр -NoExit.
- Запуск cmd в качестве администратора вручную, затем
powershell.exe -NoExit -ExecutionPolicy RemoteSigned -file \\UNC\Test.ps1
(Это не тот же ограниченный экземпляр)
Я бы понял, если этот режим был несколько ограничен, и модули нужно импортировать вручную,но это не объясняет, почему информация реестра возвращается по-другому.