IT

Powershell을 통해 Windows 기능을 활성화하는 방법

itgroup 2023. 8. 21. 21:06
반응형

Powershell을 통해 Windows 기능을 활성화하는 방법

Powershell을 사용하여 두 가지 Windows 기능을 사용하도록 설정해야 합니다.하지만 저는 그들의 이름이나 찾는 방법을 모릅니다.

Windows Features

지금까지 여기에 있는 스크립트를 사용하여 IIS를 설치하고 기본 응용 프로그램 풀을 중지할 수 있었습니다.

function InstallFeature($name) {
    cmd /c "ocsetup $name /passive"
}
InstallFeature IIS-WebServerRole
    InstallFeature IIS-WebServer
        InstallFeature IIS-CommonHttpFeatures
            InstallFeature IIS-DefaultDocument
            InstallFeature IIS-DirectoryBrowsing
            InstallFeature IIS-HttpErrors
            InstallFeature IIS-HttpRedirect
            InstallFeature IIS-StaticContent
        InstallFeature IIS-HealthAndDiagnostics
            InstallFeature IIS-CustomLogging
            InstallFeature IIS-HttpLogging
            InstallFeature IIS-HttpTracing
            InstallFeature IIS-LoggingLibraries
        InstallFeature IIS-Security
            InstallFeature IIS-RequestFiltering
            InstallFeature IIS-WindowsAuthentication
        InstallFeature IIS-ApplicationDevelopment
            InstallFeature IIS-NetFxExtensibility
            InstallFeature IIS-ISAPIExtensions
            InstallFeature IIS-ISAPIFilter
            InstallFeature IIS-ASPNET
    InstallFeature IIS-WebServerManagementTools 
        InstallFeature IIS-ManagementConsole 
        InstallFeature IIS-ManagementScriptingTools

import-module WebAdministration

Stop-WebAppPool DefaultAppPool

해결책

검색 방법:

Get-WindowsFeature *ASP*
Get-WindowsFeature *activation*

설치 방법:

Add-WindowsFeature NET-Framework-45-ASPNET
Add-WindowsFeature NET-HTTP-Activation

최신 윈도우즈 클라이언트 OS(윈도우즈 10/8.1/8)의 경우 서버의 기능만 관리하기 위해 설치-윈도우즈 기능을 사용할 수 없습니다.사용하려고 하면 다음과 같은 오류 메시지가 표시됩니다.

윈도우즈 기능 가져오기 : 지정한 cmdlet의 대상은 윈도우즈 클라이언트 기반 운영 체제가 될 수 없습니다.

선택적 기능을 찾아 설치하는 데 사용할 수 있는 DISM Powershell 모듈이 있습니다.

gcm -module DISM #List available commands
Get-WindowsOptionalFeature -online | ft #List all features and status
Enable-WindowsOptionalFeature -online -FeatureName NetFx3 -Source e:\Sources\sxs

마지막 명령에서-Source e:\Sources\sxs기능이 설치 미디어에서 원본 파일을 참조해야 하는 경우에만 필요합니다(일반적으로 오류: 0x800f081f 원본 파일을 찾을 수 없습니다).클라이언트 OS에는 .NET Framework 버전 3.5만 필요한 것으로 보이지만 서버 OS에는 설치 미디어를 참조하여 소스를 찾아야 하는 다른 버전도 많습니다.

Windows 2008 R2에 있는 경우 이를 위한 모듈이 있습니다.

Import-Module servermanager

이 모듈은 3cmdlet을 내보냅니다.Get-WindowsFeature,Add-WindowsFeature그리고.remove-WindowsFeature

그래서 당신은 다음과 같은 것을 만들 수 있습니다.get-windowsfeature *frame*.net 기능을 나열하고 다음과 같은 명령을 통해 설치합니다.Add-WindowsFeature Net-Framework

이름(짧은 이름)과 표시 이름(긴 설명)을 가져오려면 다음을 시도합니다.
get-windowsfeat | format-table - 속성 이름, 표시 이름 - AutoSize

이를 사용하여 설치합니다.
설치 - Windows 기능 - 이름 $Name

여기서 $Name은 get의 이름 속성입니다.

PS: 설치-Windows 기능이 Windows 기능 추가를 대체했습니다.

가장 쉬운 방법은 다음과 같습니다.

  • 필요한 역할 및 기능이 설치되지 않은 시스템 사용
  • 서버 역할 및 기능 추가로 이동합니다(서버 관리자).
  • 마법사를 사용하여 필요한 역할 및 기능 추가
  • 마지막 화면에서 "설치" 버튼을 누르기 전에 "구성 설정 내보내기" 링크가 표시됩니다.

구성 설정 내보내기

XML 파일을 저장합니다.

XML 파일이 있으면 아래 나열된 PowerShell 스크립트를 사용하여 "Windows Feature 설치" cmdlet(서버 2012, 2016)을 호출할 수 있습니다.

참고 1: PowerShell 스크립트는 Windows Server 2008, 2012 및 2016에서 작동하도록 설계되었습니다.윈도우즈 Server 2008의 경우 cmdlet은 윈도우즈 기능 추가입니다.

참고 2: PowerShell 스크립트는 XML 파일이 동일한 폴더에 있고 이름이 스크립트 내부에 나열되어 있다고 가정합니다. 3행과 4행을 참조하십시오.

Import-Module ServerManager -ErrorAction Stop

$win2k8xml = '.\features-w2k8.xml'
$win2k12xml = '.\RolesAndFeatures.xml'


$minOSVersion = [version] "6.1.7600" # Windows Server 2008 R2 RTM version
$os = Get-WmiObject Win32_OperatingSystem
$currentVersion = [version]$os.Version

if($currentVersion -lt $minOSVersion)
{
    throw "OS version equal or greater than ${minOSVersion} is required to run this script"
}
elseif($currentVersion.ToString().substring(0,3) -eq $minOSVersion.ToString().substring(0,3))
{
If (!(Test-Path $win2k8xml)) {Write-Host "For Windows Server 2008 R2 server make sure that you have Features-W2K8.xml in the current folder" -ForegroundColor Yellow; Pause}
}
elseif($currentVersion -gt $minOSVersion){                                                            

If (!(Test-Path $win2k12xml)) {Write-Host "For Windows Server 2012/2016 make sure that you have RolesAndFeatures.xml in the current folder" -ForegroundColor Yellow; Pause}
}

$OSVersionName = (get-itemproperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name ProductName).ProductName
Write-Host "Your OS version is:$OSVersionName" -ForegroundColor Green

$defaultComputerName = $env:computername
$ComputerName = Read-Host "Computername (Press Enter for current computer - $defaultComputerName)"


if ([string]::IsNullOrEmpty($ComputerName))
{
    $ComputerName = $defaultComputerName;
}

Write-host "Installation will take place on the following computers: $ComputerName"



function Invoke-WindowsFeatureBatchDeployment {
    param (
        [parameter(mandatory)]
        [string] $ComputerName,
        [parameter(mandatory)]
        [string] $ConfigurationFilePath
    )

    # Deploy the features on multiple computers simultaneously.
    $jobs = @()
    if(Test-Connection -ComputerName $ComputerName -Quiet){
        Write-Host "Connection succeeded to: " $ComputerName

        if ($currentVersion.ToString().substring(0,3) -eq $minOSVersion.ToString().substring(0,3)) {
        $jobs += Start-Job -Command {
        #Add-WindowsFeature -ConfigurationFilePath $using:ConfigurationFilePath -ComputerName $using:ComputerName -Restart
        $import = Import-Clixml $using:ConfigurationFilePath
        $import | Add-WindowsFeature
        } 
        } 
        elseif ($currentVersion -gt $minOSVersion) {
        $jobs += Start-Job -Command {
        Install-WindowsFeature -ConfigurationFilePath $using:ConfigurationFilePath -ComputerName $using:ComputerName -Restart
        } 
        }    

    }
    else{
        Write-Host "Configuration failed for: "+ $ComputerName + "! Check computer name and execute again"
    }


    Receive-Job -Job $jobs -Wait | Select-Object Success, RestartNeeded, ExitCode, FeatureResult
}
if ($currentVersion.ToString().substring(0,3) -eq $minOSVersion.ToString().substring(0,3)) {$FilePath = Resolve-Path $win2k8xml}
elseif ($currentVersion -gt $minOSVersion) {$FilePath = Resolve-Path $win2k12xml}

Invoke-WindowsFeatureBatchDeployment $ComputerName $FilePath

언급URL : https://stackoverflow.com/questions/14236406/how-to-enable-a-windows-feature-via-powershell

반응형