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 &quot;#APPPATH\Install.net3.5.bat&quot;" 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

Вы также можете использовать шоколад:

choco install dotnet3.5

Перейдите в командную строку и введите это:

dism / online / enable-feature / имя_функции:NetFX3 /all /Source:d:\sources\sxs /LimitAccess

Примечание. Источником должен быть установочный диск Windows 2012. В моем случае это было расположено на D:

Другие вопросы по тегам