2017-10-21 7 views
0

私は、このPowerShellコマンドを使用して、ストレージテーブルの行を取得することができます。灰色のストレージテーブルのタイムスタンプを文字列として取得するにはどうすればよいですか?

$temp_table_name = "MY_TABLE_NAME" 
$saContext = (Get-AzureRmStorageAccount -ResourceGroupName $resourceGroup -Name $storageAccount).Context 
$temp_table = Get-AzureStorageTable -Name $temp_table_name -Context $saContext 
$result = Get-AzureStorageTableRowAll -table $temp_table 

私は私のテーブルに2つのタイムスタンプを持って、1は名前Timestampと紺碧のテーブル自体のためであり、もう一つは名前TIMESTAMPとメトリック(自動的に保存された)のためであります。その後、$result[0]の結果は怒鳴るようなものです:そこだけTIMESTAMPであり、もう一つはEtagである理由私にはわからない

Average  : 3228132966.4 
Count  : 240 
CounterName : \Memory\AvailableMemory 
DeploymentId : 2c90752b-100f-4640-a056-e2b894bf5bd5 
Host   : cpuusagetest 
Last   : 3230662656 
Maximum  : 3231711232 
Minimum  : 3225419776 
TIMESTAMP : 10/16/2017 10:00:00 PM 
Total  : 774751911936 
PartitionKey : ************* 
RowKey  : ***************__:005CMemory:005CAvailableMemory 
Etag   : W/"datetime'2017-10-16T23%3A00%3A05.5000867Z'" 

!その結果とにかく私は、このコマンドを使用してタイムスタンプを取得できます。

$result[0].Timestamp 

それは、10/16/2017 23:00:00のように常に文字列を返しますが、テーブルの行では、2017-10-16T23:30:00.000のようなものを保存しています。私はそれがストレージテーブルに格納されている形式を正確に取得する必要があります。
私はこのようなコマンドを使用してフォーマットを変更しようとしました:

[String]$result[0].Timestamp 
or 
$result[$j].Timestamp.toString("s") 

が、結果は同じです。私は$result[$j].Timestamp.GetType().FullName結果を使用していたときに注意してください
はその後、私のテーブル内のタイムスタンプのプロパティのタイプSystem.DateTimeあるDateTimeであり、私はそれを変更することはできません(と望んでいません)。
it's a screenshot of my Azure Storage Explorer that is showing that I have Minute & Second & milliseconds in my Timestamp 上記は私が私のタイムスタンプでミニッツ&セカンド&ミリ秒を持っていることを

を示しているが、私は、このコマンドを使用していたときに私のAzureストレージエクスプローラーのスクリーンショットです:

$result[$j].Timestamp.toString("s") 

結果はなしですminuets and seconds ...
これらのコマンドもテストします。

"{0:MM/dd/yyyy hh:mm:ss}" -f $result[$j].Timestamp 

ですが、結果は10/16/2017 10:00:00
のようになりますか? 30::

答えて

1

は、DateTime型のD、コマンドd.ToString(「S」)の任意のオブジェクトを提供 2017-10-16T23形式で日付オブジェクトをお返しします00.000

あなたは文字列を持っている場合と、 DateTimeに変換する必要があり、以下は異なるフォーマットの日付文字列の間の変換を実行します。に評価上記で

[DateTime]::Parse("10/16/2017 23:00:00").ToString("s") 

「2017-10-16T23:30:00.000」

+0

はい、それはですフォーマットを変更するが、私は情報を取得しているので、私はminuets、秒、ミリ秒を失うだろうストレージテーブルから作成すると、フォーマットが変更され、これらのものが削除されます!それをStringに解析すると、それは削除されます...:( –

+0

内部記憶域のタイプが 'DateTime'の場合、' ToString( "s") 'はその行のタイムスタンプを"同じフォーマットで返します( '$ result [0] .TIMESTAMP'が既に' DateTime'であれば、解析する必要はありません - ToString() ')それは、それを文字列に変換する必要があり、それを使って何をやっているのですか?解決しようとしている問題の代替解決策があるかもしれません。 –

+0

@BrendanGreenさらに詳しい情報を追加しました。 Azure Storage Tableに自動的に格納され、同じタイムスタンプ(CPU、メモリ、ネットワークなど)のメトリックがいくつかあります。同じタイムスタンプのメトリック行をすべて1つの行にマージする必要があります。それを別のテーブルに格納します。 –

関連する問題