5

これがそれほど難しくないことを願っていますが、ドメインからユーザー情報を照会して CSV にエクスポートするスクリプトを作成しています。

スクリプトは管理スタッフによって実行され、スクリプトに入力する必要があるのはユーザー名だけです。

難しいのは、次の金曜日に基づいて CSV に名前を付ける必要があることです。

Note: I am in Australia so my date format is DD-MM-YYYY

現在検討している方法は以下の通りです。

# Grab the Script Run Timestamp
$ScriptRuntime = Get-Date -Day 4 -Month 5 -Year 2013

# Grab the next Friday (including today)
$NextFriday = $ScriptRuntime.AddDays(0 + $(0,1,2,3,4,5,6 -eq 5 - [int]$ScriptRuntime.dayofweek))

Write-Host "Script Run:  "$ScriptRuntime
Write-Host "Next Friday: "$NextFriday

これは、土曜日を除くすべての日で問題なく機能します。

  • 2013 年 26 日、5 月、2013 年として実行すると、2013 年 5 月 31 日が返されます。
  • 2013 年 27 日、5 月、2013 年として実行すると、2013 年 5 月 31 日が返されます。
  • 2013 年 28 日 5 月 5 日を実行すると、2013 年 5 月 31 日が返されます。
  • 2013 年 29 日 5 月 5 日を実行すると、2013 年 5 月 31 日が返されます。
  • 2013 年 30 月 5 月 30 日を実行すると、2013 年 5 月 31 日が返されます。
  • 2013 年 31 月 5 月 31 日を実行すると、2013 年 5 月 31 日が返されます。
  • 2013 年 1 日、6 月、2013 年として実行すると、2013 年 5 月 31 日が返されます (これは 2013 年 7 月 6 日である必要があります)。
  • 2013 年 2 日 6 月 6 日の日付を実行すると、2013 年 7 月 6 日が返されます。

私は何を間違っていますか?

4

9 に答える 9

3

次を使用して、コードを実行する日付に関係なく、今週の金曜日の日付を取得できます。

$today = (Get-Date).Date    
$nextfriday = $today.AddDays([int][dayofweek]::Friday - $today.DayOfWeek)    

常に次の金曜日 (つまり、土曜日に実行する場合は翌週の金曜日) を取得したい場合は、最後に追加の修飾子が必要です。

if ($today -ge $nextfriday) {$nextfriday = $nextfriday.AddDays(7)}
于 2018-05-14T08:14:36.127 に答える
1

これを試して、次の金曜日を見つけてください。

$ScriptRuntime = Get-Date -Day 4 -Month 5 -Year 2013
$i= switch ( [int][dayofweek]::Friday - [int] $ScriptRuntime.dayofweek )
    { 
       -1 { 6 }
       default { $_ }
    } 
$ScriptRuntime.adddays($i)
于 2013-05-28T07:34:01.857 に答える
0

私は次のようにします:

$Date = Get-Date
$targetDay = [int][dayofweek]::Friday
# I use this logic to figure out the next Friday
# else we would get Friday of this week
$intToday = if([int]$Date.DayOfWeek -le [int][dayofweek]::Friday ){
                [int]$Date.DayOfWeek 
            } else { 
                [int]$Date.DayOfWeek - 7
            }
$nextFriday = $date.AddDays($targetDay - $intToday)

同じ問題に遭遇しましたが、ループの使用は少し多すぎると思いました。任意の週の前日の PowerShell Find Dateに関する記事を見つけましたが、その日の値がハードコードされており、Windows 環境によっては日曜日がインデックス0(ゼロ) にならない場合があります。それで、私はそのロジックをインスピレーションとして使用し、上記のものを考え出しました.

それが次の人に役立つことを願っています。

于 2016-01-04T23:20:53.410 に答える