bat файл для установки.net 3.5 framework для win server 2012
Я хочу создать bat-файл для установки.net Framework 3.5 на Windows Server 2012. Я пытался так, но безуспешно:
cd /D %userprofile%
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Import-Module ServerManager
powershell -ImportSystemModules Add-WindowsFeature NET-Framework-Features
Похоже, что после входа в консоль powershell последние 2 команды не выполняются.
У кого-нибудь есть идея, почему застревает?
Или у кого-нибудь есть другой bat-файл, как автоматизировать установку.net 3.5 в windows server 2012?
После дополнительных попыток я заставил летучую мышь работать со следующей командой, когда она запускается вручную.
call C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ImportSystemModules Add-WindowsFeature NET-Framework-Features
Но когда я пытаюсь запустить его из dotnetInstaller, та же летучая мышь больше не работает
<component command="CMD.EXE /K "#APPPATH\Install.net3.5.bat"" command_silent="" command_basic="" uninstall_command="" uninstall_command_silent="" uninstall_command_basic="" returncodes_success="" returncodes_reboot="" disable_wow64_fs_redirection="False" id=".Net 3.5 SP1 Win8Server" display_name=".Net 3.5 SP1" uninstall_display_name="" os_filter="" os_filter_min="winServer2008R2" os_filter_max="" os_filter_lcid="" type="cmd" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="" allow_continue_on_error="True" default_continue_on_error="False" required_install="True" required_uninstall="True" selected_install="True" selected_uninstall="True" note="" processor_architecture_filter="" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="False" show_progress_dialog="True" show_cab_dialog="True">
<installedcheck path="SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5" fieldname="Install" fieldvalue="1" defaultvalue="False" fieldtype="REG_DWORD" comparison="match" rootkey="HKEY_LOCAL_MACHINE" wowoption="NONE" type="check_registry_value" description="Installed Check" />
<installedcheck path="SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5" fieldname="SP" fieldvalue="1" defaultvalue="False" fieldtype="REG_DWORD" comparison="match" rootkey="HKEY_LOCAL_MACHINE" wowoption="NONE" type="check_registry_value" description="Installed Check" />
</component>
Я получаю эту ошибку Есть идеи, почему?
Термин "Add-WindowsFeature" не распознается как имя командлета, функции, файла сценария или работоспособной программы. Проверьте правильность написания имени или, если он указан, убедитесь, что путь указан правильно, и повторите попытку. В строке:1 символ:19 + Add-WindowsFeature <<<< -имя net-framework-features + CategoryInfo: ObjectNotFound: (Add-WindowsFeature:String) [], CommandNotFoundException + FullyQualifiedErrorId: CommandNotFoundException
6 ответов
Я заставил это работать с этой летучей мышью:
call C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ImportSystemModules Add-WindowsFeature NET-Framework-Features
И в dotnetInstaller загрузчик:
<component command="Install.net3.5.bat" command_silent="" command_basic="" uninstall_command="" uninstall_command_silent="" uninstall_command_basic="" returncodes_success="" returncodes_reboot="" disable_wow64_fs_redirection="True" id=".Net 3.5 SP1 Win8Server" display_name=".Net 3.5 SP1" uninstall_display_name="" os_filter="" os_filter_min="winServer2008R2" os_filter_max="" os_filter_lcid="" type="cmd" installcompletemessage="" uninstallcompletemessage="" mustreboot="False" reboot_required="" must_reboot_required="False" failed_exec_command_continue="" allow_continue_on_error="True" default_continue_on_error="False" required_install="True" required_uninstall="True" selected_install="True" selected_uninstall="True" note="" processor_architecture_filter="" status_installed="" status_notinstalled="" supports_install="True" supports_uninstall="False" show_progress_dialog="True" show_cab_dialog="True">
<installedcheck path="SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5" fieldname="Install" fieldvalue="1" defaultvalue="False" fieldtype="REG_DWORD" comparison="match" rootkey="HKEY_LOCAL_MACHINE" wowoption="NONE" type="check_registry_value" description="Installed Check" />
<installedcheck path="SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5" fieldname="SP" fieldvalue="1" defaultvalue="False" fieldtype="REG_DWORD" comparison="match" rootkey="HKEY_LOCAL_MACHINE" wowoption="NONE" type="check_registry_value" description="Installed Check" />
</component>
Кажется, это не сработало раньше, потому что начальный загрузчик запускал процесс bat как 32 бита, что не понравилось PS. Так что я поставил disable_wow64_fs_redirection="True", теперь он запускает бит как 64-битный процесс, и это работает:)
Спасибо всем за ответ. Я разместил ответ, может быть, поможет кто-то еще:)
Два варианта:
1) Используйте файл скрипта и параметр File.
#############
## script.ps1
Import-Module ServerManager
Add-WindowsFeature NET-Framework-Features
Затем выполните:
powershell -File c:\script.ps1
2) Используйте параметр Command:
powershell -Command "Import-Module ServerManager; Add-WindowsFeature NET-Framework-Features"
В любом случае, старайтесь избегать переключателя -ImportSystemModules (не рекомендуется в v3), это просто перебор. Он загрузит все системные модули, когда все, что вам нужно, это просто модуль ServerManager. И если вы работаете в v3, команда Import-Module также является избыточной. Смотрите функцию автоматической загрузки модуля.
Для запуска команд с powershell используйте параметр -Command, например, так:
powershell.exe -command "&{Import-Module ServerManager; ImportSystemModules Add-WindowsFeature NET-Framework-Features}"
Это работает следующим образом:
cd /D %userprofile%
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command "Import-Module ServerManager; ImportSystemModules Add-WindowsFeature NET-Framework-Features"
pause
Перейдите в командную строку и введите это:
dism / online / enable-feature / имя_функции:NetFX3 /all /Source:d:\sources\sxs /LimitAccess
Примечание. Источником должен быть установочный диск Windows 2012. В моем случае это было расположено на D: