我有一个脚本启动一个事件,并等待用户按任意键来停止脚本执行.我正在尝试找到一种方法来显示一个计时器(脚本运行了多长时间),同时在Read-Host上等待用户输入.有没有办法实现这个目标?
这有效
$Time = [System.Diagnostics.Stopwatch]::StartNew()
while ($true) {
$CurrentTime = $Time.Elapsed
write-host $([string]::Format("`rTime: {0:d2}:{1:d2}:{2:d2}",
$CurrentTime.hours,
$CurrentTime.minutes,
$CurrentTime.seconds)) -nonewline
sleep 1
if ($Host.UI.RawUI.KeyAvailable -and ("q" -eq $Host.UI.RawUI.ReadKey("IncludeKeyUp,NoEcho").Character)) {
Write-Host "Exiting now"
break;
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试通过Invoke-RestMethod在类似的上下文中使用-F开关发送文件.
卷曲示例
curl -F FileName=@"/path-to-file.name" "https://uri-to-post"
Run Code Online (Sandbox Code Playgroud)
在powershell中,我尝试过这样的事情:
$uri = "https://uri-to-post"
$contentType = "multipart/form-data"
$body = @{
"FileName" = Get-Content($filePath) -Raw
}
Invoke-WebRequest -Uri $uri -Method Post -ContentType $contentType -Body $body
}
Run Code Online (Sandbox Code Playgroud)
如果我检查fiddler,我看到主体包含原始二进制数据,但我得到200响应,显示没有发送有效负载.
我也尝试过使用-InFile参数而没有运气.
我已经看过许多使用.net类的例子,但是他们试图用更新的Powershell 3命令来保持这个简单.
有没有人有任何指导或经验使这项工作?
我有一系列时间间隔,每隔15分钟,例如:
00:00:00,
00:15:00,
00:30:00,
00:45:00,
01:00:00
等等
我想循环,只显示30分钟间隔的那些.我尝试过使用.compare但是这并没有得到我需要的东西.
例如:
var interval = TimeSpan.FromMinutes(30);
foreach(var t in MyArray)
{
if(TimeSpan.Compare(inteval, t.Time) == 0)
Do something
}
}
Run Code Online (Sandbox Code Playgroud)
这在技术上有效,但只会匹配00:30:00.我可以在循环中添加间隔并使用类似的东西:
var interval = new TimeSpan(t.Hour, 30, 0)
Run Code Online (Sandbox Code Playgroud)
但那只会得到00:30:00,01:30:00.
有没有办法让时间像一个通配符,每30分钟一次?
我想要的输出是:
00:00:00
00:30:00
01:00:00
01:30:00
等等