Функция включения работает в консоли powershell, но не как скрипт - PullRequest
0 голосов
/ 18 мая 2018

У меня есть скрипт, который должен устанавливать функции на основе предоставленного списка.Выход хороший, но команды всегда не могут быть установлены, но они работают в консоли powershell.

$features_to_enable=New-Object 
System.Collections.Generic.List[System.Object]

# We only want to read the features that are enabled. 
Get-Content 'C:\features.txt' | Where-Object {$_ -match ".*Enabled"} | 
ForEach-Object {
  $features_to_enable.Add($_)
}

# Converted List to Array
$features_to_enable.ToArray()

forEach($feature in $features_to_enable) {
  #Enable-WindowsOptionalFeature -Online -FeatureName "$($feature)" -All -NoRestart
  dism /Online /Enable /FeatureName:"$($feature)" /All
}

При использовании метода необязательной функции enable windows я получаю эту ошибку:

Enable-WindowsOptionalFeature : Feature name NetFx4ServerFeatures                                                           
Enabled is unknown.
At C:\features.ps1:12 char:3
+   Enable-WindowsOptionalFeature -Online -FeatureName "$($feature)" -A ...
+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [Enable-WindowsOptionalFeature], COMException
+ FullyQualifiedErrorId : Microsoft.Dism.Commands.EnableWindowsOptionalFeatureCommand

При использовании dism в отведениях скрипта powershell:

Deployment Image Servicing and Management tool
Version: 10.0.16299.15

Image Version: 10.0.16299.125


Error: 87

The enable option is unknown. 
For more information, refer to the help by running DISM.exe /?.

The DISM log file can be found at C:\Windows\Logs\DISM\dism.log

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

В итоге проблема заключалась в том, что функция $ string на самом деле "Включена", и я не смог увидеть, что они находятся на одной строке.

В конце концов, я решил проблему следующим образом:

$f = $feature.replace(' ' , '').replace('Enabled', '')
Enable-WindowsOptionalFeature -Online -FeatureName $f -All -NoRestart
0 голосов
/ 18 мая 2018

Начиная с версии dism, я думаю, что на вашем компьютере работает Windows 10, поэтому рекомендуется PowerShell.

$features = (Get-WindowsOptionalFeature -Online | ? state -eq 'enabled').FeatureName
foreach($feature in $features) {
     Enable-WindowsOptionalFeature -FeatureName $feature -Online -All -NoRestart
    }

Это работает для меня после тестирования.:)

...