programing

PowerShell Add-Windows 기능을 인식할 수 없음

itmemos 2023. 9. 19. 20:51
반응형

PowerShell Add-Windows 기능을 인식할 수 없음

우선 검토해 주셔서 감사합니다.

기본적으로 PowerShell을 로컬 시스템으로 실행할 수 있는 타사 에이전트 소프트웨어가 있습니다.이를 통해 WinRM 등이 없어도 원격 PowerShell 명령을 쉽게 실행할 수 있습니다.

문제는 일부 서버에서는 Windows 기능을 실행하거나 Windows 기능을 추가할 수 없다는 문제가 있습니다.

이를 달성하기 위해 노력하는 방법의 예는 다음과 같습니다.

Import-Module ServerManager;
Get-WindowsFeature;

출력은 다음과 같습니다.

The term 'Get-WindowsFeature' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

PowerShell 창에 동일한 명령을 입력하거나 PowerShell.exe를 직접 호출하면 반환됩니다.애플리케이션 내에서 우리가 제대로 하지 못하고 있는 작업을 파악하고 있지만, 여기서 PowerShell에 대해 가장 잘 알고 있는 사람은 저입니다.

그 cmdlet들을 싣기 위해 제가 해야 할 특별한 일이 있습니까?이상하게도 Get-Module 은 아무것도 보이지 않습니다.

감사해요!


제이비스미스에 대한 답변:

예, 2.0으로 보입니다.말씀하신 명령의 결과는 다음과 같습니다.

>Name                           Value                                            
>----                           -----                                            
>CLRVersion                     2.0.50727.6407                                   
>BuildVersion                   6.1.7600.16385                                   
>PSVersion                      2.0                                              
>WSManStackVersion              2.0                                              
>PSCompatibleVersions           {1.0, 2.0}                                       
>SerializationVersion           1.1.0.1                                          
>PSRemotingProtocolVersion      2.1                                              
>
>Name : AppLocker
>Name : Appx
>Name : BestPractices
>Name : BitsTransfer
>Name : BranchCache
>Name : CimCmdlets
>Name : DirectAccessClientComponents
>Name : Dism
>Name : DnsClient
>Name : International
>Name : iSCSI
>Name : IscsiTarget
>Name : ISE
>Name : Kds
>Name : Microsoft.PowerShell.Diagnostics
>Name : Microsoft.PowerShell.Host
>Name : Microsoft.PowerShell.Management
>Name : Microsoft.PowerShell.Security
>Name : Microsoft.PowerShell.Utility
>Name : Microsoft.WSMan.Management
>Name : MMAgent
>Name : MsDtc
>Name : NetAdapter
>Name : NetConnection
>Name : NetLbfo
>Name : NetQos
>Name : NetSecurity
>Name : NetSwitchTeam
>Name : NetTCPIP
>Name : NetworkConnectivityStatus
>Name : NetworkTransition
>Name : MSFT_NfsMappedIdentity
>Name : NFS
>Name : PKI
>Name : PrintManagement
>Name : PSDiagnostics
>Name : PSScheduledJob
>Name : PSWorkflow
>Name : PSWorkflowUtility
>Name : RemoteDesktop
>Name : ScheduledTasks
>Name : SecureBoot
>Name : ServerCore
>Name : ServerManager
>Name : ServerManagerTasks
>Name : SmbShare
>Name : SmbWitness
>Name : Storage
>Name : TroubleshootingPack
>Name : TrustedPlatformModule
>Name : UserAccessLogging
>Name : VpnClient
>Name : Wdac
>Name : Whea
>Name : WindowsDeveloperLicense
>Name : WindowsErrorReporting
>Name : AWSPowerShell

GCM | ? {$_도 눈치챘습니다.ModuleName -eq 'ServerManager' }을(를) 실행하면 아무것도 반환되지 않지만 일반 PS 창을 통해 명령 목록이 예상대로 반환됩니다.

이는 PowerShell 스크립트가 32비트 PowerShell 인스턴스에서 시작되기 때문일 수 있습니다.서버 매니저 명령은 PowerShell의 64비트 버전에서만 사용할 수 있습니다.참조: PowerShell을 통해 Server Manager 모듈에 액세스할 없음

--편집 - jbsmith의 의견에 추가하려면---

기타 시도할 사항:

Get-Command cmdlt를 실행한 경우:

gcm | ? { $_.ModuleName -eq 'ServerManager' }

서버 관리자 모듈이 로드되지 않았기 때문에 아무것도 반환하지 않습니다.

대신 실행해 보십시오.로드할 수 있는 모든 모듈이 나열됩니다.

Get-Module -ListAvailable | ? { $_.Name -eq 'ServerManager' }

다른 방법으로는 "강제" 옵션을 사용하는 것입니다(모듈 또는 구성원이 읽기 전용 액세스 모드를 사용하는 경우에도 모듈과 구성원을 다시 가져옵니다).

Import-Module ServerManager -Force;
Get-WindowsFeature;

Get-WindowsFeature는 더 이상 Windows 또는 Windows Server와 함께 제공되지 않으며 Windows Server 원격 관리 도구를 설치하여 별도로 설치해야 합니다.

여기 다운로드 링크가 있습니다. 클라이언트 및 서버 OS에 대한 다운로드가 있으므로 OS에 맞는 패키지를 선택했습니다.

https://www.microsoft.com/en-us/download/details.aspx?id=45520

문제는 서버 매니저의 메타데이터가 이 서버들에서 3.0이었지만 PowerShell 명령을 호출하기 위해 개발된 exe는 버전 2.0에 불과했다는 것입니다.모듈을 가져오려고 할 때 메타데이터에 대한 스키마 오류가 반환되었지만 EXE가 이를 stdout으로 리디렉션하지 않아 응답이 없습니다.

Import-Module : The 'C:\Windows\system32\WindowsPowerShell\v1.0\Modules\Serveranager\ServerManager.psd1' module cannot be imported because its manifest contins one or more members that are not valid. The valid manifest members are ('ModuleToProcess', 'NestedModules', 'GUID', 'Author', 'CompanyName', 'Copyright', 'ModuleVersion', 'Description', 'PowerShellVersion', 'PowerShellHostName', 'PowerShellHostVersion', 'CLRVersion', 'DotNetFrameworkVersion', 'ProcessorArchitecture', 'RequiredModules', 'TypesToProcess', 'FormatsToProcess', 'ScriptsToProcess', 'PrivateData', 'RequiredAssemblies', 'ModuleList', 'FileList', 'FunctionsToExport', 'VariablesToExport', 'AliasesToExport', 'CmdletsToExport'). Remove the members that are not valid ('HelpInfoUri', 'RootModule'), then try to importthe module again.
    At line:1 char:14
    + Import-Module <<<<  ServerManager; Get-Module
        + CategoryInfo          : InvalidData: (C:\Windows\syst...verManager.psd1:String) [Import-Module], InvalidOperationException
        + FullyQualifiedErrorId : Modules_InvalidManifestMember,Microsoft.PowerShell.Commands.ImportModuleCommand

Windows Server 2016에서 ADFS를 설치하는 동안 다음 C를 복사했습니다.\Windows\system32\Windows PowerShell\v1.0\C에 폴더를 모듈화합니다:\Users\vangant\Documents\Windows PowerShell\Modules가 작동했습니다!

저도 같은 문제가 있었는데 제 문제는 제 PowerShell이 64비트 PowerShell이 아닌 32비트에서 실행된다는 것이었습니다.

64비트 PowerShell에서 실행하면 잘 작동했습니다.

이는 PowerShell 스크립트가 32비트 PowerShell 인스턴스에서 시작되기 때문일 수 있습니다.서버 매니저 명령은 PowerShell의 64비트 버전에서만 사용할 수 있습니다.

언급URL : https://stackoverflow.com/questions/20686302/powershell-add-windowsfeature-unrecognized

반응형