dav*_*rat 4 powershell date powershell-3.0
希望这不会太困难,但我正在编写一个脚本,从域中查询用户信息并导出到CSV.
该脚本由我们的管理人员运行,他们输入脚本所需的只是用户名.
棘手的部分是我需要根据即将到来的星期五来命名CSV.
Note: I am in Australia so my date format is DD-MM-YYYY
Run Code Online (Sandbox Code Playgroud)
我目前正在考虑的方式如下:
# 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
Run Code Online (Sandbox Code Playgroud)
除星期六以外的所有日子都可以.
我究竟做错了什么?
小智 8
这发现下周五:
$date = Get-Date
while ($Date.DayOfWeek -ne "Friday") {$date = $date.AddDays(1)}
Run Code Online (Sandbox Code Playgroud)
小智 6
这里有一个单行代码也可以解决这个问题:
$Date = @(@(0..7) | % {$(Get-Date).AddDays($_)} | ? {$_.DayOfWeek -ieq "Friday"})[0]
Run Code Online (Sandbox Code Playgroud)
如果您需要特定时间:
$Date = @(@(0..7) | % {$(Get-Date "12:00").AddDays($_)} | ? {($_ -gt $(Get-Date)) -and ($_.DayOfWeek -ieq "Friday")})[0]
Run Code Online (Sandbox Code Playgroud)
我不确定我是否跟着你,但下周五我会得到:
$date = Get-Date
for($i=1; $i -le 7; $i++)
{
if($date.AddDays($i).DayOfWeek -eq 'Friday')
{
$date.AddDays($i)
break
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
无论您在哪一天运行代码,都可以使用以下命令获取本周星期五的日期:
$today = (Get-Date).Date
$nextfriday = $today.AddDays([int][dayofweek]::Friday - $today.DayOfWeek)
Run Code Online (Sandbox Code Playgroud)
如果你想总是得到下周五(所以,如果你在周六跑步,那么下周的周五),你只需要在最后添加一个额外的修饰符:
if ($today -ge $nextfriday) {$nextfriday = $nextfriday.AddDays(7)}
Run Code Online (Sandbox Code Playgroud)
聚会有点晚了,但这是我的看法(没有循环,没有条件):
[datetime] $MyDate = get-date
[DayOfWeek] $NextDayOfWeek = 'Friday'
$MyDate.AddDays( (7 - [int] $MyDate.DayOfWeek + [int] $NextDayOfWeek )%7 )
Run Code Online (Sandbox Code Playgroud)
如果您想验证更多日期:
[datetime] $MyDate = get-date
[DayOfWeek] $NextDayOfWeek = 'Friday'
1..30 | ForEach-Object {
[PSCustomObject]@{
DayOfWeek = $MyDate.DayOfWeek ;
Date = $MyDate;
$("Next$NextDayOfWeek") = $MyDate.AddDays((7 - [int] $MyDate.DayOfWeek + [int] $NextDayOfWeek )%7)
};
$MyDate = $MyDate.AddDays(1)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8839 次 |
| 最近记录: |