提供一行有用的PowerShell脚本,请为每个答案提供一个脚本。
有一个类似的question here,但是这个只提供带脚本的页面的链接,在这里逐一给出答案,并提供最常用或最有用的脚本的贡献列表。
列出最新版本的文件
ls -r -fi *.lis | sort @{expression={$_.Name}}, @{expression={$_.LastWriteTime};Descending=$true} | select Directory, Name, lastwritetime | Group-Object Name | %{$_.Group | Select -first 1}
gps programThatIsAnnoyingMe | kill
使用已注册的程序打开文件(例如start
例如start foo.xls
)
ii foo.xls
检索并显示系统特殊文件夹的路径
[enum]::getvalues([system.environment+specialfolder]) | foreach {"$_ maps to " + [system.Environment]::GetFolderPath($_)}
将环境值复制到剪贴板(现在你知道如何使用剪贴板!)
$env:appdata | % { [windows.forms.clipboard]::SetText($input) }
OR
ls | clip
使用SnapIns
TFS中两个变更集编号之间的文件
Get-TfsItemHistory <location> -Recurse -Version <label1>~<label2> |
% { $(Get-TfsChangeset $_.ChangeSetID).Changes } |
% { $_.Item.ServerItem } | Sort-Object -Unique
获取有关Exchange 200中所有Hub服务器错误的队列消息
Get-ExchangeServer | ?{$_.IsHubTransportServer -eq $true} | Get-Queue
| ?{$_.LastError -ne $null} | Sort-Object -Descending -Property MessageCount
| ft -Property NextHopDomain,@{l="Count";e={$_.MessageCount}},@{l="Last Try";e={$_.LastRetryTime.tosting("M/dd hh:mm")}},@{l="Retry";e={$_.NextRetryTime.tostring("M/dd hh:mm")}},Status,LastError -AutoSize
答案 0 :(得分:21)
大约下午6点....
exit
答案 1 :(得分:13)
嗯,这是我经常使用的一些解释。
ii .
ii是Invoke-Item的别名。此命令行开关实质上调用在Windows中为以下项目注册的任何命令。所以这个:
ii foo.xls
将在Excel中打开foo.xls
(假设您已安装Excel并且.xls文件与Excel关联)。
在ii .
中,.
引用当前工作目录,因此该命令将导致Windows资源管理器在当前目录中打开。
答案 2 :(得分:13)
列出我今天更新的所有文件:
dir | ?{$_.LastWriteTime -ge [DateTime]::Today}
经常使用它我实际上在我的个人资料中创建了一个小功能:
function Where-UpdatedSince{
Param([DateTime]$date = [DateTime]::Today,
[switch]$before=$False)
Process
{
if (($_.LastWriteTime -ge $date) -xor $before)
{
Write-Output $_
}
}
}; set-item -path alias:wus -value Where-UpdatedSince
所以我可以说:
dir | wus
dir | wus "1/1/2009"
要查看今天之前更新的内容:
dir | wus -before
答案 3 :(得分:6)
我最喜欢的powershell one liner
gps programThatIsAnnoyingMe | kill
答案 4 :(得分:4)
($x=new-object xml).Load("http://rss.slashdot.org/Slashdot/slashdot");$x.RDF.item|?{$_.creator-ne"kdawson"}|fl descr*
我最喜欢的:这是一个斜线读者没有先生提出的可怕提交。 kdawson。它被设计为少于120个字符,允许它在/.// p>上用作签名
答案 5 :(得分:3)
检索并显示系统特殊文件夹的路径
[enum]::getvalues([system.environment+specialfolder]) | foreach {"$_ maps to " + [system.Environment]::GetFolderPath($_)}
答案 6 :(得分:3)
我发现显示环境变量的值很有用
dir env:
您还可以将env值复制到剪贴板
$env:appdata | % { [windows.forms.clipboard]::SetText($input) }
(你需要在调用之前加载windows.forms:Add-Type -a system.windows.forms;并使用-STA开关运行PowerShell)
答案 7 :(得分:3)
我毫不犹豫地逐一列举我的PowerShell单行列表,因为目前列表中只有400个条目! :-)但是这里有一些我的最爱,激起你的兴趣:
[accelerators]::get
[xml]"<root><a>...</a></root>"
$PWD | ConvertTo-Json -Depth 2
#cd
[System.Text.RegularExpressions.RegexOptions]::Singleline
ls . | select name,length | Out-ConsoleGraph -prop length -grid
整个系列在Simple-Talk.com上发布的4部分系列中公开发售 - 我希望这些对SO读者有用!
我想打电话给&#34;在PowerShell的一行中做任何事情&#34; ,但我的编辑想要更简洁一些,所以我们选择了 PowerShell One-Liners < / em>的。虽然为了充分披露,但只有98%左右的人才是真正意义上的单行者;我觉得这很接近于四舍五入......: - )
答案 8 :(得分:3)
我不喜欢用于计算代码行的复杂应用程序,特别是因为我认为它首先是一个虚假的度量标准。我最终使用的是PS one-liner:
PS C:\Path> (dir -include *.cs,*.xaml -recurse | select-string .).Count
我只是包含我想要包含在行数中的文件的扩展名,并从项目的根目录中获取它。
答案 9 :(得分:3)
取消Visual Studio 2012 ALL CAPS菜单 - 安装VS2012后我做的第一件事。
Set-ItemProperty -Path HKCU:\Software\Microsoft\VisualStudio\11.0\General -Name SuppressUppercaseConversion -Type DWord -Value 1
感谢Richard Banks发现了注册表值。
答案 10 :(得分:2)
这显示哪些进程正在使用哪个版本的MS CRT DLL:
gps | select ProcessName -exp Modules -ea 0 |
where {$_.modulename -match 'msvc'} | sort ModuleName |
Format-Table ProcessName -GroupBy ModuleName
答案 11 :(得分:2)
由于我安装了TFS PowerTools快照,这可能是作弊,但这对于找出两个变更集,版本或标签之间的文件已更改非常有用。
Get-TfsItemHistory <location> -Recurse -Version <label1>~<label2> |
% { $(Get-TfsChangeset $_.ChangeSetID).Changes } |
% { $_.Item.ServerItem } | Sort-Object -Unique
答案 12 :(得分:1)
在文件中生成一些伪随机字节。
[Byte[]]$out=@(); 0..9 | %{$out += Get-Random -Minimum 0 -Maximum 255}; [System.IO.File]::WriteAllBytes("random",$out)
Get-Random算法从系统时钟中获取种子,因此不要将其用于严重的加密需求。
答案 13 :(得分:1)
将某些内容的输出传递给剪贴板
ls | clip
答案 14 :(得分:0)
cls
在我尝试的每个命令之后摆脱所有难以处理的 - 红色标记,让我恢复一个漂亮的高清晰屏幕。
答案 15 :(得分:0)
按字母顺序列出所有Windows提供程序:
get-winevent -listprovider microsoft-windows* | % {$_.Name} | sort
实际上,您可以将此通配符用于任何特定的提供商组:
get-winevent -listprovider microsoft-windows-Securit* | % {$_.Name} | sort
答案 16 :(得分:0)
将一些内容复制到桌面:
Copy-Item $home\*.txt ([Environment]::GetFolderPath("Desktop"))
答案 17 :(得分:0)
功能显示的系统正常运行时间 我将此用作会计电子表格
function get-uptime
{
$PCounter = "System.Diagnostics.PerformanceCounter"
$counter = new-object $PCounter System,"System Up Time"
$value = $counter.NextValue()
$uptime = [System.TimeSpan]::FromSeconds($counter.NextValue())
"Uptime: $uptime"
"System Boot: " + ((get-date) - $uptime)
}
答案 18 :(得分:0)
获取Exchange 2007中所有Hub服务器上的错误的队列消息(带有一些格式)
Get-ExchangeServer | ?{$_.IsHubTransportServer -eq $true} | Get-Queue | ?{$_.LastError -ne $null} | Sort-Object -Descending -Property MessageCount | ft -Property NextHopDomain,@{l="Count";e={$_.MessageCount}},@{l="Last Try";e={$_.LastRetryTime.tosting("M/dd hh:mm")}},@{l="Retry";e={$_.NextRetryTime.tostring("M/dd hh:mm")}},Status,LastError -AutoSize