PowerShell Add-WindowsFeature が認識されない 質問する

PowerShell Add-WindowsFeature が認識されない 質問する

まずこれをレビューしていただきありがとうございます。

基本的に、PowerShell を LocalSystem として実行できるサードパーティ エージェント ソフトウェアを入手しました。これにより、WinRM などを使用せずにリモート PowerShell コマンドを簡単に実行できます。

私が遭遇している問題は、一部のサーバーでは get-WindowsFeature または Add-WindowsFeature を実行できないことです。

これを実現しようとしている方法の例を次に示します。

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 に最も精通しています。

これらのコマンドレットをロードするには、何か特別な操作が必要ですか? 奇妙なことに、Get-Module では何も表示されません。

ありがとう!


JBSmith への返答:

はい、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 ウィンドウでは期待どおりにコマンド リストが返されます。

ベストアンサー1

これはおそらく、PowerShell スクリプトが PowerShell の 32 ビット インスタンスから起動されているためです。ServerManager コマンドは、PowerShell の 64 ビット バージョンからのみ使用できます。参照:PowerShell 経由で ServerManager モジュールにアクセスできない

--編集 - jbsmith のコメントに追加---

試してみるべき追加事項:

Get-Command コマンドレットを実行した場合:

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

ServerManager モジュールがロードされていないため、何も返されません。

代わりにこれを実行してみてください。ロード可能なすべてのモジュールがリストされます。

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

他に試す必要があるのは、「強制」オプションを使用することです (モジュールまたはそのメンバーのアクセス モードが読み取り専用であっても、モジュールとそのメンバーを再インポートします)。

Import-Module ServerManager -Force;
Get-WindowsFeature;

おすすめ記事