<p>A pré-visualização 3 do PowerShell 7.1 não usa o formato de data / hora configurado</p>

Criado em 22 mai. 2020  ·  71Comentários  ·  Fonte: PowerShell/PowerShell

Isso deve falar por si:

`` ``

$ PSVersionTable.PSVersion.ToString (); (Get-ItemProperty 'HKCU: Control PanelInternational' -name sTimeFormat) .sTimeFormat; (Get-ItemProperty 'HKCU: Control PanelInternational' -name sShortDate) .sShortDate; Get-Date -DisplayHint Time; Get-Date | ConvertTo-Csv
7.0.1
HH: mm: ss
aaaa-MM-dd

10:03:10
"DisplayHint", "DateTime", "Date", "Day", "DayOfWeek", "DayOfYear", "Hour", "Kind", "Millisecond", "Minute", "Month", "Second", "Ticks "," TimeOfDay "," Ano "
"DateTime", "Friday, May 22, 2020 10:03:10", "2020-05-22 00:00:00", "22", "Friday", "143", "10", "Local" , "179", "3", "5", "10", "637257385901795718", "10: 03: 10.1795718", "2020"

$ PSVersionTable.PSVersion.ToString (); (Get-ItemProperty 'HKCU: Control PanelInternational' -name sTimeFormat) .sTimeFormat; (Get-ItemProperty 'HKCU: Control PanelInternational' -name sShortDate) .sShortDate; Get-Date -DisplayHint Time; Get-Date | ConvertTo-Csv
7.1.0-preview.3
HH: mm: ss
aaaa-MM-dd

10:03:37
"DisplayHint", "DateTime", "Date", "Day", "DayOfWeek", "DayOfYear", "Hour", "Kind", "Millisecond", "Minute", "Month", "Second", "Ticks "," TimeOfDay "," Ano "
"DateTime", "Friday, May 22, 2020 10:03:37 AM", "5/22/2020 12:00:00 AM", "22", "Friday", "143", "10", " Local "," 61 "," 3 "," 5 "," 37 "," 637257386170614178 "," 10: 03: 37.0614178 "," 2020 "

`` ``

Passos para reproduzir

  • use a cultura en-US padrão
  • defina o formato da hora como 24 horas HH:mm:ss e o formato da data como yyyy-MM-dd configurações
  • execute Get-Date | ConvertTo-Csv

Comportamento esperado

A hora é formatada usando o formato de 24 horas, a data usando o formato yyyy-MM-dd especificado.

Comportamento real

A hora é formatada no formato 12h am / pm, data usando o formato M/dd/yyyy

Dados ambientais

> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      7.1.0-preview.3
PSEdition                      Core
GitCommitId                    7.1.0-preview.3
OS                             Microsoft Windows 10.0.18363
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

Issue-Question Resolution-Fixed Waiting - DotNetCore

Comentários muito úteis

O pessoal do .NET marcou meu problema como uma duplicata do dotnet / runtime # 37121, onde @safern afirma que isso foi corrigido para o .NET 5 Preview 5 - não é o que vejo ...

Essa afirmação da minha parte estava inicialmente errada, pois pensei que https://github.com/dotnet/runtime/issues/37121 era uma cópia de https://github.com/dotnet/runtime/issues/35638, que foi corrigido no Preview5 . Espero ter uma correção para https://github.com/dotnet/runtime/issues/37121 esta semana e espero poder portá-lo para o Preview6 a tempo.

Todos 71 comentários

Esse comportamento é novo na última visualização ou sempre foi assim?

Eu diria que é novo no preview 3. Que pena, acabei de atualizar meu último sistema, então não tenho mais nenhum sistema de preview 2.

Precisamos confirmar se houve uma mudança em algum momento ou se este é o comportamento original.

Além disso, você pode confirmar se isso é afetado usando o parâmetro -UseCulture explicitamente?

Usamos o método Datetime.ToLongTimeString() para a saída no caso.
Além disso, você poderia olhar (Get-Culture).DateTimeFormat .

Em 7.0.1:

`` ``

$ PSVersionTable.PSVersion.ToString (); (Get-Culture) .DateTimeFormat
7.0.1

AMDesignator: AM
Calendário: System.Globalization.GregorianCalendar
DateSeparator: -
FirstDayOfWeek: segunda-feira
CalendarWeekRule: FirstDay
FullDateTimePattern: dddd, MMMM d, aaaa HH: mm: ss
LongDatePattern: dddd, MMMM d, aaaa
LongTimePattern: HH: mm: ss
MonthDayPattern: MMMM d
PMDesignator: PM
Padrão RFC1123: ddd, dd MMM aaaa HH ':' mm ':' ss 'GMT'
ShortDatePattern: aaaa-MM-dd
ShortTimePattern: HH: mm
SortableDateTimePattern: aaaa '-' MM '-' dd'T'HH ':' mm ':' ss
TimeSeparator::
UniversalSortableDateTimePattern: aaaa '-' MM '-' dd HH ':' mm ':' ss'Z '
AnoMês Padrão: MMMM aaaa
AbbreviatedDayNames: {Dom, Seg, Ter, Qua…}
ShortestDayNames: {Su, Mo, Tu, We ...}
DayNames: {domingo, segunda, terça, quarta-feira ...}
AbbreviatedMonthNames: {Jan, Fev, Mar, Abr…}
MonthNames: {janeiro, fevereiro, março, abril…}
IsReadOnly: True
NativeCalendarName: Calendário Gregoriano
AbbreviatedMonthGenitiveNames: {Jan, Fev, Mar, Abr…}
MonthGenitiveNames: {janeiro, fevereiro, março, abril…}
`` ``

Na versão 7.1 3:

`` ``

$ PSVersionTable.PSVersion.ToString (); (Get-Culture) .DateTimeFormat
7.1.0-preview.3

AMDesignator: AM
Calendário: System.Globalization.GregorianCalendar
DateSeparator: /
FirstDayOfWeek: domingo
CalendarWeekRule: FirstDay
FullDateTimePattern: dddd, MMMM d, aaaa h: mm: ss tt
LongDatePattern: dddd, MMMM d, aaaa
LongTimePattern: h: mm: ss tt
MonthDayPattern: MMMM d
PMDesignator: PM
Padrão RFC1123: ddd, dd MMM aaaa HH ':' mm ':' ss 'GMT'
ShortDatePattern: M / d / aaaa
ShortTimePattern: h: mm tt
SortableDateTimePattern: aaaa '-' MM '-' dd'T'HH ':' mm ':' ss
TimeSeparator::
UniversalSortableDateTimePattern: aaaa '-' MM '-' dd HH ':' mm ':' ss'Z '
AnoMês Padrão: MMMM aaaa
AbbreviatedDayNames: {Dom, Seg, Ter, Qua…}
ShortestDayNames: {S, M, T, W…}
DayNames: {domingo, segunda, terça, quarta-feira ...}
AbreviatedMonthNames: {Jan, Fev, Mar, Abr…}
MonthNames: {janeiro, fevereiro, março, abril…}
IsReadOnly: True
NativeCalendarName: Calendário Gregoriano
AbbreviatedMonthGenitiveNames: {Jan, Fev, Mar, Abr…}
MonthGenitiveNames: {janeiro, fevereiro, março, abril…}
`` ``

Precisamos confirmar se houve uma mudança em algum momento ou se este é o comportamento original.

Além disso, você pode confirmar se isso é afetado usando o parâmetro -UseCulture explicitamente?

`` ``

$ PSVersionTable.PSVersion.ToString (); Get-Date | ConvertTo-Csv -UseCulture
7.0.1
"DisplayHint", "DateTime", "Date", "Day", "DayOfWeek", "DayOfYear", "Hour", "Kind", "Millisecond", "Minute", "Month", "Second", "Ticks "," TimeOfDay "," Ano "
"DateTime", "Friday, May 22, 2020 19:33:59", "2020-05-22 00:00:00", "22", "Friday", "143", "19", "Local" , "174", "33", "5", "59", "637257728391742480", "19: 33: 59,1742480", "2020"

$ PSVersionTable.PSVersion.ToString (); Get-Date | ConvertTo-Csv -UseCulture
7.1.0-preview.3
"DisplayHint", "DateTime", "Date", "Day", "DayOfWeek", "DayOfYear", "Hour", "Kind", "Millisecond", "Minute", "Month", "Second", "Ticks "," TimeOfDay "," Ano "
"DateTime", "Friday, May 22, 2020 7:34:45 PM", "5/22/2020 12:00:00 AM", "22", "Friday", "143", "19", " Local "," 63 "," 34 "," 5 "," 45 "," 637257728850632108 "," 19: 34: 45.0632108 "," 2020 "

`` ``

Parece mesmo uma regressão. @iSazonov você sabe se houve alguma mudança mesclada nesta área do código desde 7.1-p2? Não consigo me lembrar de nenhum no momento.

Talvez seja uma regressão ou mudança no .NET Core?

Aqui está o que obtenho com a visualização 2 no mesmo sistema:

`` ``

$ PSVersionTable.PSVersion.ToString (); (Get-ItemProperty 'HKCU: Control PanelInternational' -name sTimeFormat) .sTimeFormat; (Get-ItemProperty 'HKCU: Control PanelInternational' -name sShortDate) .sShortDate; Get-Date -DisplayHint Time; Get-Date | ConvertTo-Csv
7.1.0-preview.2
HH: mm: ss
aaaa-MM-dd

19:42:05
"DisplayHint", "DateTime", "Date", "Day", "DayOfWeek", "DayOfYear", "Hour", "Kind", "Millisecond", "Minute", "Month", "Second", "Ticks "," TimeOfDay "," Ano "
"DateTime", "Friday, May 22, 2020 19:42:05", "2020-05-22 00:00:00", "22", "Friday", "143", "19", "Local" , "14", "42", "5", "5", "637257733250149958", "19: 42: 05.0149958", "2020"

$ PSVersionTable.PSVersion.ToString (); Get-Date | ConvertTo-Csv -UseCulture
7.1.0-preview.2
"DisplayHint", "DateTime", "Date", "Day", "DayOfWeek", "DayOfYear", "Hour", "Kind", "Millisecond", "Minute", "Month", "Second", "Ticks "," TimeOfDay "," Ano "
"DateTime", "Friday, May 22, 2020 19:42:40", "2020-05-22 00:00:00", "22", "Friday", "143", "19", "Local" , "847", "42", "5", "40", "637257733608470239", "19: 42: 40,8470239", "2020"
`` ``

Não posso confirmar. Depois de alterar essas strings de formato no registro e reiniciar o PowerShell, obtenho os resultados corretos.

O que? Onde estava mudando as strings de formato no registro mencionado aqui? 😕

Para acertar, desinstalei o preview 3 e instalei o preview 2

😜

Este problema foi marcado como respondido e não teve nenhuma atividade por 1 dia . Foi fechado para fins de limpeza.

Não entendo: há um problema na visualização 3 que precisa ser corrigido!

Eu posso recompor. Precisamos de etapas de repo confiáveis.
Você pode baixar pacotes zip, instalar o PowerShell lado a lado, executar a versão e verificar o resultado (melhor no sistema limpo).

Quer dizer que você não pode reproduzir ?

Não tenho um sistema limpo para testar (poderia configurar uma VM de teste, mas levaria muito tempo).

Vou testar com as instalações SxS implantadas pelo XCOPY de preview 2 e preview 3.

Aqui está o resultado, usando estes scripts de inicialização:

REM runpwsh.bat cls PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem .\pwsh -noprofile -file .\runtest.ps1

`` ``

runtest.ps1

$ PSVersionTable.PSVersion.ToString ()
(Get-ItemProperty 'HKCU: Control PanelInternational' -name sTimeFormat) .sTimeFormat
(Get-ItemProperty 'HKCU: Control PanelInternational' -name sShortDate) .sShortDate
Get-Date -DisplayHint Time
Get-Date | ConvertTo-Csv
`` ``

image

image

Reproduzido em dois sistemas diferentes.

O que é resultado:

$ Host

(Get-Culture) .DateTimeFormat

Na pré-visualização 2:

`` ``
C: tmpPowerShell-7.1.0-preview.2-win-x64> PATH = C: WINDOWSsystem32; C: WINDOWS; C: WINDOWSSystem32Wbem

C: tmpPowerShell-7.1.0-preview.2-win-x64> .pwsh -noprofile -file .runtest.ps1
7.1.0-preview.2

Nome: ConsoleHost
Versão: 7.1.0-preview.2
InstanceId: 91f11a8e-5486-4058-b1e8-9bb93bb9adc9
IU: System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture: en-US
CurrentUICulture: en-US
PrivateData: Microsoft.PowerShell.ConsoleHost + ConsoleColorProxy
DebuggerEnabled: True
IsRunspacePushed: False
Runspace: System.Management.Automation.Runspaces.LocalRunspace

AMDesignator: AM
Calendário: System.Globalization.GregorianCalendar
DateSeparator: -
FirstDayOfWeek: segunda-feira
CalendarWeekRule: FirstDay
FullDateTimePattern: dddd, MMMM d, aaaa HH: mm: ss
LongDatePattern: dddd, MMMM d, aaaa
LongTimePattern: HH: mm: ss
MonthDayPattern: MMMM d
PMDesignator: PM
Padrão RFC1123: ddd, dd MMM aaaa HH ':' mm ':' ss 'GMT'
ShortDatePattern: aaaa-MM-dd
ShortTimePattern: HH: mm
SortableDateTimePattern: aaaa '-' MM '-' dd'T'HH ':' mm ':' ss
TimeSeparator::
UniversalSortableDateTimePattern: aaaa '-' MM '-' dd HH ':' mm ':' ss'Z '
AnoMês Padrão: MMMM aaaa
AbbreviatedDayNames: {Dom, Seg, Ter, Qua…}
ShortestDayNames: {Su, Mo, Tu, We ...}
DayNames: {domingo, segunda, terça, quarta-feira ...}
AbreviatedMonthNames: {Jan, Fev, Mar, Abr…}
MonthNames: {janeiro, fevereiro, março, abril…}
IsReadOnly: True
NativeCalendarName: Calendário Gregoriano
AbbreviatedMonthGenitiveNames: {Jan, Fev, Mar, Abr…}
MonthGenitiveNames: {janeiro, fevereiro, março, abril…}

`` ``

Na pré-visualização 3:

`` ``
C: tmpPowerShell-7.1.0-preview.3-win-x64> PATH = C: WINDOWSsystem32; C: WINDOWS; C: WINDOWSSystem32Wbem

C: tmpPowerShell-7.1.0-preview.3-win-x64> .pwsh -noprofile -file .runtest.ps1
7.1.0-preview.3

Nome: ConsoleHost
Versão: 7.1.0-preview.3
InstanceId: 9244eab6-c591-4b06-9148-719bc5cba22d
IU: System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture: en-US
CurrentUICulture: en-US
PrivateData: Microsoft.PowerShell.ConsoleHost + ConsoleColorProxy
DebuggerEnabled: True
IsRunspacePushed: False
Runspace: System.Management.Automation.Runspaces.LocalRunspace

AMDesignator: AM
Calendário: System.Globalization.GregorianCalendar
DateSeparator: /
FirstDayOfWeek: domingo
CalendarWeekRule: FirstDay
FullDateTimePattern: dddd, MMMM d, aaaa h: mm: ss tt
LongDatePattern: dddd, MMMM d, aaaa
LongTimePattern: h: mm: ss tt
MonthDayPattern: MMMM d
PMDesignator: PM
Padrão RFC1123: ddd, dd MMM aaaa HH ':' mm ':' ss 'GMT'
ShortDatePattern: M / d / aaaa
ShortTimePattern: h: mm tt
SortableDateTimePattern: aaaa '-' MM '-' dd'T'HH ':' mm ':' ss
TimeSeparator::
UniversalSortableDateTimePattern: aaaa '-' MM '-' dd HH ':' mm ':' ss'Z '
AnoMês Padrão: MMMM aaaa
AbbreviatedDayNames: {Dom, Seg, Ter, Qua…}
ShortestDayNames: {S, M, T, W…}
DayNames: {domingo, segunda, terça, quarta-feira ...}
AbreviatedMonthNames: {Jan, Fev, Mar, Abr…}
MonthNames: {janeiro, fevereiro, março, abril…}
IsReadOnly: True
NativeCalendarName: Calendário Gregoriano
AbbreviatedMonthGenitiveNames: {Jan, Fev, Mar, Abr…}
MonthGenitiveNames: {janeiro, fevereiro, março, abril…}

`` ``

A que horas você muda o formato de data e hora?

As versões do PowerShell usam diferentes .Net 5 Preview - 3 e 4.
Você pode baixar nightly build (está no .Net 5.0 Preview5) e verificar novamente.
Se você perceber o problema, poderá discuti-lo no repositório .Net Runtime.

Não tenho certeza se entendi sua pergunta. Quando mudei o formato de data e hora? Deve ter sido quando instalei os sistemas em primeiro lugar, porque, como engenheiro de software, prefiro 1) a IU em inglês, então alterei o idioma de exibição para inglês (meus computadores vinham com Windows em francês) 2) o ISO8601 YYYY Formato de data -MM-DD. Portanto, provavelmente nunca executei nenhuma versão do PowerShell com os formatos de data / hora en-US padrão.

Onde posso obter as compilações noturnas?

Qual é a API do .NET Core usada pelo PowerShell Core para converter uma data / hora em string? Preciso dessas informações se quiser abrir um problema no .NET 5.0.

Você pode baixar o night build da página principal do repositório.

O PowerShell usa o método Datetime.ToLongTimeString (). Todos os formatos que você obtém acima com (Get-Culture) .DateTimeFormat.

Nessa página principal, posso ver o status das compilações noturnas em CI, mas não há links para download. Estou esquecendo de algo?

Vou tentar criar um programa de teste C # e executá-lo com várias versões anteriores do .NET 5.

Pressione o ícone de status e veja os artefatos em "Build for Windows".

Mesma reprodução:

image

O código que lida com isso está aqui:

https://github.com/PowerShell/PowerShell/blob/b1e998046e12ebe5da9dee479f20d479aa2256d7/src/Microsoft.PowerShell.Commands.Utility/commands/utility/CsvCommands.cs#L1045 -L1067

Com este código em mente, você pode verificar o que recebe de (Get-Date).ToString() e (Get-Date).PSObject.ToString() ?

Estou reabrindo isso porque não parece que chegamos ao fundo da questão ainda. 🙂

image

image

image

Qual é a maneira fácil de criar um programa C # que invoca aquele método .ToString() e o executa em várias visualizações do .NET 5 ?

🤔 OK, isso _definidamente_ parece uma regressão no .NET 5, então, bom achado.

Não sei se existe uma maneira fácil, mas você pode especificar em qual pré-visualização executar normalmente com global.json na pasta do projeto; você pode ver um exemplo em global.json neste repo. 🙂

Se você conseguir descobrir qual visualização quebrou o comportamento de ToString (), definitivamente vale a pena abrir um problema no repositório dotnet / runtime para que possamos consertá-lo.

Você economizará tempo se conversar com especialistas em .Net Runtime.

É isso que quero fazer a seguir ... depois de descobrir como implantar as últimas 3 visualizações do .NET 5 lado a lado para executar o programa de teste C #. Presumo que haja arquivos zip dessas visualizações em algum lugar implantáveis ​​por XCOPY ...

Alguém pode me ajudar a encontrar os bits .NET (pelo menos as versões usadas pelo PS7.1 preview 2 e preview 3)?

Talvez eu espere até o preview 4, baseado no .NET 5 Preview 5, sair, e teste novamente lá ...

Você pode baixar nightly build - já está no .Net 5 Preview 5.

Boas notícias!

Mas ... quando alcanço https://powershell.visualstudio.com/PowerShell/_build/results?buildId=55455&view=artifacts&type=publishedArtifacts , recebo:

image

e clicar em artifacts não faz nada. O que estou fazendo errado?

Desculpe por parecer idiota, sou definitivamente um novato do GH CI ...

Você pode carregar a compilação noturna da página principal https://github.com/PowerShell/PowerShell#build -status-of-nightly-builds

GitHub
PowerShell para todos os sistemas! Contribua com o desenvolvimento do PowerShell / PowerShell criando uma conta no GitHub.

É exatamente o que venho tentando fazer, veja
Não é possível baixar PS nightly build.zip

Tente "Artefatos" - botão à direita.

Qual botão "Artefatos" à direita? Consulte minha apresentação de slides do PSR ou faça uma captura de tela por conta própria.

Suponho que você queria um log do ProcMon de mim reproduzindo o problema. Aqui está, com visualização 3.

runpwsh.bat.procmon.202006150911.PML.zip

@ sba923 Ainda sugiro abrir um novo problema no .Net Runtime.

É isso que venho buscando há algum tempo, mas não posso, a menos que possa postar uma reprodução. Para isso, preciso saber como obter uma implantação lado a lado de diferentes visualizações do .NET 5 e, em seguida, escrever um programa C # que executaria em cada uma dessas visualizações do .NET. Não consegui descobrir como fazer o download e implantar essas visualizações. Ainda...

Obrigado pela dica.

Mas antes de fazer isso, gostaria de testar com uma compilação do PowerShell baseada em .NET 5 Preview 5 ... ;-)

Eu acho que é isso ;-)

`` ``
using System;

namespace DateTimeToString
{
programa de aula
{
static void Main (string [] args)
{
string dotnetversion = System.Environment.Version.ToString ();
Console.WriteLine ("versão dotnet: {0}", versão dotnet);
var now = System.DateTime.Now;
string str = now.ToString ();
Console.WriteLine ("DateTime.Now.ToString (): {0}", str);
}
}
}
`` ``

gci -dir 'dotnet5p*' | % { $dotnetdir = $_.FullName "Testing in: " + $dotnetdir & ($dotnetdir + '\dotnet') --info | sls -raw 'Version:.*preview' & ($dotnetdir + '\dotnet') ($dotnetdir + '\DateTimeToString.dll') }

image

No log do procmon vejo um acesso à UTI - acho que o problema pode estar relacionado ao fato.

Parece que .Net tem uma opção de cancelar o ICU. Você pode tentar ver um resultado.

Aqui está o que eu ganho com "System.Globalization.Invariant": true se isto é o que você estava se referindo:

image

A formatação está incorreta independentemente da versão de visualização do .NET 5.

Não, há uma opção de voltar do ICU para a API tradicional do Windows.

Consulte https://docs.microsoft.com/en-us/dotnet/core/run-time-config/globalization#nls

Aprenda sobre as configurações de tempo de execução que configuram aspectos de globalização de um aplicativo .NET Core, por exemplo, como ele analisa datas japonesas.

Irá testar ... A mudança para usar ICU foi introduzida no .NET 5 preview 4 ...

Bingo!

image

O pessoal do .NET marcou meu problema como uma duplicata de https://github.com/dotnet/runtime/issues/37121 , onde @safern afirma que isso foi corrigido para .NET 5 Preview 5 - não é o que vejo ...

Estou correto em supor que você não desejará usar o NLS no PowerShell? IMVHO, isso seria uma causa potencial para o PowerShell se comportar de maneira diferente no Windows e em outras plataformas.

O pessoal do .NET marcou meu problema como uma duplicata do dotnet / runtime # 37121, onde @safern afirma que isso foi corrigido para o .NET 5 Preview 5 - não é o que vejo ...

Essa afirmação da minha parte estava inicialmente errada, pois pensei que https://github.com/dotnet/runtime/issues/37121 era uma cópia de https://github.com/dotnet/runtime/issues/35638, que foi corrigido no Preview5 . Espero ter uma correção para https://github.com/dotnet/runtime/issues/37121 esta semana e espero poder portá-lo para o Preview6 a tempo.

Estou correto em supor que você não desejará usar o NLS no PowerShell?

O PowerShell segue as melhorias do .Net (e do sistema operacional). Seria incrível para os usuários descobrirem que o PowerShell funciona de maneira diferente de outros aplicativos .Net e SO nativos.

@iSazonov Não tenho certeza se sei como interpretar sua resposta. Você (em nome da equipe do PowerShell) é a favor de alinhar o PowerShell no Windows com todos os outros aplicativos do Windows (nesse caso, NLS é a norma) ou de alinhar o PowerShell no Windows com o PowerShell em outras plataformas (nesse caso, o comportamento do ICU regra)?

Por enquanto, posso definir DOTNET_SYSTEM_GLOBALIZATION_USENLS=true em meu ambiente global para obter o comportamento esperado ao executar o PowerShell 7.1 preview 3. Ou vou continuar usando o PowerShell 7.0.2 para quaisquer cargas de trabalho afetadas.

@ sba923 Visto que NLS e ICU têm diferenças, pode ser um problema - um aplicativo .Net pode funcionar de maneira diferente em sistemas operacionais diferentes. A MSFT começou a migrar para a ICU. Ele foi adicionado nas últimas versões do Windows e o .Net 5.0 usa ICU por padrão.
O PowerShell 7.1 obtém o aprimoramento automaticamente. O mesmo é verdadeiro para todos os aplicativos .Net 5+.

Então você irá para PS7.1 usando ICU, e assumindo que seja compatível com versões anteriores, por exemplo, segue as configurações do usuário, correto?

@ sba923 7.1 estará em .Net 5.0. Se o .Net usar ICU por padrão, o PowerShell fará o mesmo.

Deve estar OK, desde que isso não introduza mudanças significativas.

Como esperado, o problema ainda está presente na visualização 4 do 7.1 ...

Para dar uma atualização, tenho um PR para a correção: https://github.com/dotnet/runtime/pull/38372

Para dar uma atualização, tenho um PR para a correção: dotnet / runtime # 38372

Boa! Veja meu comentário sobre como levar em consideração as alterações do usuário imediatamente. Isso precisa de uma mudança de código no lado PowerShell das coisas?

Se a versão do PowerShell 7.0 detectar as mudanças de tempo (cultura) imediatamente, teremos uma mudança significativa.

Se a versão do PowerShell 7.0 detectar as mudanças de tempo (cultura) imediatamente, teremos uma mudança significativa.

O que você quer dizer? Esse 7.1 deve se comportar da mesma forma que o 7.0? Eu não sei qual é o comportamento do 7.0, mas eu _esperaria_ que ele leve as alterações do usuário em conta dinamicamente.

PS C: srct> ($ PSVersionTable.PSVersion) .ToString (), (Get-Culture) .DateTimeFormat.ShortDatePattern
7.1.0-preview.3
M / d / aaaa

PS C: srct> ($ PSVersionTable.PSVersion) .ToString (), (Get-Culture) .DateTimeFormat.ShortDatePattern
7.0.1
aaaa-MM-dd

.Net fix foi mesclado. Nós entenderemos logo. (.Net 5.0 Preview8)

.Net fix foi mesclado. Nós entenderemos logo. (.Net 5.0 Preview8)

Qual é o plano de teste? É difícil fazer uma versão privada do PS7.1 com a correção do .NET para que possamos testar os efeitos colaterais / regressões?

@ sba923 Você pode construir .Net localmente e testar. Mas não vale a pena o esforço. Podemos esperar cerca de um mês.

Ainda esperando o .NET Preview 8 ser lançado ...

O PowerShell 7.1.0-preview.7 é fornecido com o .NET Preview 8, que deve resolver esse problema. Deixe-nos saber se não tiver.

Eu concordo 😜

`` ``

$ PSVersionTable.PSVersion.ToString (); (Get-ItemProperty 'HKCU: Control PanelInternational' -name sTimeFormat) .sTimeFormat; (Get-ItemProperty 'HKCU: Control PanelInternational' -name sShortDate) .sShortDate; Get-Date -DisplayHint Time; Get-Date | ConvertTo-Csv
7.1.0-preview.7
HH: mm: ss
aaaa-MM-dd

18:08:34
"DisplayHint", "DateTime", "Date", "Day", "DayOfWeek", "DayOfYear", "Hour", "Kind", "Millisecond", "Minute", "Month", "Second", "Ticks "," TimeOfDay "," Ano "
"DateTime", "quinta-feira, 10 de setembro de 2020 18:08:35", "2020-09-10 00:00:00", "10", "quinta-feira", "254", "18", "Local" , "25", "8", "9", "35", "637353581150253074", "18: 08: 35.0253074", "2020"
`` ``

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

manofspirit picture manofspirit  ·  3Comentários

garegin16 picture garegin16  ·  3Comentários

alx9r picture alx9r  ·  3Comentários

pcgeek86 picture pcgeek86  ·  3Comentários

andschwa picture andschwa  ·  3Comentários