Powershell을 통해 Windows 기능을 활성화하는 방법
Powershell을 사용하여 두 가지 Windows 기능을 사용하도록 설정해야 합니다.하지만 저는 그들의 이름이나 찾는 방법을 모릅니다.
지금까지 여기에 있는 스크립트를 사용하여 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
'IT' 카테고리의 다른 글
Backbone.js를 사용하여 수집 폴링 (0) | 2023.08.21 |
---|---|
ASP.NET 윈도우즈 인증 로그아웃 (0) | 2023.08.21 |
결과 쿼리에서 개수(*) 선택 (0) | 2023.08.21 |
c# 및 excel 자동화 - 실행 중인 인스턴스 종료 (0) | 2023.08.21 |
iPhone/iPad 사용자에 대해 :hover 유사 클래스를 강제로 무시할 수 있습니까? (0) | 2023.08.21 |