2016-10-18 2 views
-1

Meine Powershell (aus einer CMD BAT-Datei aufgerufen), um .net-Versionen zu zeigen, funktioniert gut in Win 7 und Win 8.1. d. H. Informationen werden angezeigt und Sie erhalten die Aufforderung zum Fortfahren. In Windows 10 erhalten Sie keine Informationen angezeigt und erst nach der Eingabe der Eingabeaufforderung sehen Sie die Informationen auf dem Bildschirm blinken, bevor das Fenster verloren geht.Warum Powershell wo | Select ist anders in Windows 10

Wie machen wir diese Powershell (v5) arbeiten in Windows 10?

dank

# 
# Print out .NET versions installed 
# 
# IDs from https://msdn.microsoft.com/en-us/library/hh925568(v=vs.110).aspx#net_d 
# 
Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -recurse | 
Get-ItemProperty -name Version,Release -EA 0 | 
Where { $_.PSChildName -match '^(?!S)\p{L}'} | 
Select PSChildName, Version, Release, @{ 
    name="Product" 
    expression={ 
     switch($_.Release) { 
     378389 { [Version]"4.5" } 
     378675 { [Version]"4.5.1 Win8.1,2012R2" } 
     378758 { [Version]"4.5.1 Win8,Win7Sp1" } 
     379893 { [Version]"4.5.2" } 
     393295 { [Version]"4.6 Win10" } 
     393297 { [Version]"4.6 !Win10" } 
     394254 { [Version]"4.6.1" } 
     394256 { [Version]"4.6.1" } 
     394271 { [Version]"4.6.1" } 
     394747 { [Version]"4.6.2 Preview" } 
     394748 { [Version]"4.6.2 Preview" } 
     default {[Version] "? $_.Release" } 
     } 
    } 
} 

[string]$MenuOption = Read-Host “`n`t`tEnter <RETURN> to exit” 

Antwort

1

Sie die Pipeline ausgegeben, bevor das Ergebnis zwingen kann Read-Host durch einfaches Rohrleitungen zu Out-Default Aufruf:

Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -recurse | 
Get-ItemProperty -name Version,Release -EA 0 | 
Where { $_.PSChildName -match '^(?!S)\p{L}'} | 
Select PSChildName, Version, Release, @{ 
    name="Product" 
    expression={ 
     switch($_.Release) { 
     378389 { [Version]"4.5" } 
     378675 { [Version]"4.5.1 Win8.1,2012R2" } 
     378758 { [Version]"4.5.1 Win8,Win7Sp1" } 
     379893 { [Version]"4.5.2" } 
     393295 { [Version]"4.6 Win10" } 
     393297 { [Version]"4.6 !Win10" } 
     394254 { [Version]"4.6.1" } 
     394256 { [Version]"4.6.1" } 
     394271 { [Version]"4.6.1" } 
     394747 { [Version]"4.6.2 Preview" } 
     394748 { [Version]"4.6.2 Preview" } 
     default {[Version] "? $_.Release" } 
     } 
    } 
} |Out-Default 

[string]$MenuOption = Read-Host "`n`t`tEnter <RETURN> to exit" 

Beachten Sie, dass die meisten Ihrer Version Strings nicht wirklich gültige Werte für [version]

+0

Dank Mathias, PS kam aus bestehenden Web-Beispiel basierend auf https://msdn.microsoft.com/en-us/library/hh925568(v=vs.110).aspx#net_d –

Verwandte Themen