19

役に立つと思った 1 行の PowerShell スクリプトを提供してください。回答ごとに 1 つのスクリプトを提供してください。

ここに同様の質問がありますが、これはスクリプトを含むページへのリンクのみを提供し、ここで 1 つずつ回答して、最も頻繁に使用されるスクリプトまたは最も有用なスクリプトのリストを提供します。

  1. ファイルの最新バージョンを一覧表示する

    ls -r -fi *.lis | sort @{expression={$_.Name}}, @{expression={$_.LastWriteTime};Descending=$true} | select Directory, Name, lastwritetime | Group-Object Name | %{$_.Group | Select -first 1}

  2. gps programThatIsAnnoyingMe | kill

  3. 登録されたプログラムでファイルを開く (start例: などstart foo.xls)

    ii foo.xls

  4. システムの特別なフォルダへのパスを取得して表示します

    [enum]::getvalues([system.environment+specialfolder]) | foreach {"$_ maps to " + [system.Environment]::GetFolderPath($_)}

  5. 環境値をクリップボードにコピーします (これで、クリップボードの使用方法がわかりました!)

    $env:appdata | % { [windows.forms.clipboard]::SetText($input) }
    また
    ls | clip

SnapIn を使用

  1. TFS の 2 つの変更セット番号の間のファイル

    Get-TfsItemHistory <location> -Recurse -Version <label1>~<label2> | % { $(Get-TfsChangeset $_.ChangeSetID).Changes } | % { $_.Item.ServerItem } | Sort-Object -Unique

  2. Exchange 200 のすべてのハブ サーバーでエラーのあるキュー メッセージを取得します

    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

4

19 に答える 19

21

午後6時頃……。

exit
于 2009-06-03T15:36:41.897 に答える
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
于 2009-03-05T20:30:30.227 に答える
6

私のお気に入りのパワーシェルワンライナー

gps programThatIsAnnoyingMe | kill
于 2009-03-05T15:37:16.373 に答える
4
($x=new-object xml).Load("http://rss.slashdot.org/Slashdot/slashdot");$x.RDF.item|?{$_.creator-ne"kdawson"}|fl descr*

私のお気に入り:それは氏による恐ろしい提出物を除いたスラッシュドットリーダーです. ドーソン。/ の署名として使用できるように、120 文字未満になるように設計されています。

于 2009-03-18T00:29:51.973 に答える
3

Visual Studio 2012 ALL CAPS Menus を抑制する - VS2012 をインストールした後に最初に行うこと。

Set-ItemProperty -Path HKCU:\Software\Microsoft\VisualStudio\11.0\General -Name SuppressUppercaseConversion -Type DWord -Value 1

レジストリ値を発見したRichard Banksに感謝します。

于 2012-06-01T13:35:58.077 に答える
3

コードの行数をカウントするための複雑なアプリケーションは好きではありません。特に、そもそもそれが偽のメトリックであると考えているためです。代わりに PS ワンライナーを使用することになります。

PS C:\Path> (dir -include *.cs,*.xaml -recurse | select-string .).Count

行数に含めたいファイルの拡張子を含めて、プロジェクトのルートディレクトリから探します。

于 2009-12-18T13:13:33.543 に答える
3

環境変数の値を表示すると便利だと思いました

dir env:

また、env値もクリップボードにコピーできます

$env:appdata | % { [windows.forms.clipboard]::SetText($input) }

(呼び出しの前に windows.forms をロードする必要があります: Add-Type –a system.windows.forms; および -STA スイッチを使用して PowerShell を実行します)

于 2009-06-01T12:15:37.463 に答える
3

現在、PowerShell のワンライナーのリストを 1 つずつ列挙するのはためらいがあります。リスト番号は、現在約 400 エントリです。:-) しかし、あなたの興味をそそるために、ここに私のお気に入りのいくつかがあります:

  • すべての型アクセラレータを一覧表示します ( PSCXが必要です):[accelerators]::get
  • XML の文字列表現を実際の XML に変換します。[xml]"<root><a>...</a></root>"
  • オブジェクトをダンプします (詳細については深さを増やしてください):$PWD | ConvertTo-Json -Depth 2
  • 部分文字列で履歴からコマンドを呼び出します (以前の 'cd' コマンドを検索):#cd
  • C# 列挙値にアクセスします。[System.Text.RegularExpressions.RegexOptions]::Singleline
  • 棒グラフを生成します (Jeff Hicks のコマンドレットが必要です):ls . | select name,length | Out-ConsoleGraph -prop length -grid

コレクション全体は、Simple-Talk.com で公開されている 4 部構成のシリーズで公開されています -- これらが SO の読者に役立つことを願っています!

このシリーズを「PowerShell の 1 行で何でもできる」と呼びたかったのですが、編集者がもっと簡潔なものを求めていたので、PowerShell One-Linersにしました。完全な開示の利益のためではありますが、用語の真の精神に基づいて実際にワンライナーであるのは 98% 程度にすぎません。丸めで十分近いと思いました... :-)

于 2014-04-29T03:39:18.857 に答える
3

システムの特別なフォルダへのパスを取得して表示します

[enum]::getvalues([system.environment+specialfolder]) | foreach {"$_ maps to " + [system.Environment]::GetFolderPath($_)}
于 2009-03-10T21:02:35.817 に答える
2

これは、どのプロセスがどのバージョンのMSCRTDLLを使用しているかを示しています。

gps | select ProcessName -exp Modules -ea 0 | 
  where {$_.modulename -match 'msvc'} | sort ModuleName | 
  Format-Table ProcessName -GroupBy ModuleName
于 2009-03-22T06:57:27.710 に答える
2

TFS PowerTools スナップがインストールされているため、ごまかしている可能性がありますが、これは、2 つの変更セット、バージョン、またはラベル間で変更されたファイルを見つけるのに非常に役立ちます。

Get-TfsItemHistory <location> -Recurse -Version <label1>~<label2> | 
% { $(Get-TfsChangeset $_.ChangeSetID).Changes } |
% { $_.Item.ServerItem } | Sort-Object -Unique
于 2009-06-01T11:15:24.153 に答える
1

何かの出力をクリップボードにパイプする

ls | clip
于 2012-10-24T23:47:03.640 に答える
1

ファイル内にいくつかの疑似乱数バイトを生成します。

[Byte[]]$out=@(); 0..9 | %{$out += Get-Random -Minimum 0 -Maximum 255}; [System.IO.File]::WriteAllBytes("random",$out)

Get-Random アルゴリズムはシステム クロックからシードを取得するため、深刻な暗号化のニーズには使用しないでください。

于 2013-09-27T18:27:13.020 に答える
1

すべての Windows プロバイダーをアルファベット順で一覧表示します。

get-winevent -listprovider microsoft-windows* | % {$_.Name} | sort

実際には、プロバイダーの特定のグループに対してワイルドカードを使用してこれを使用できます。

get-winevent -listprovider microsoft-windows-Securit* | % {$_.Name} | sort
于 2011-07-04T03:03:34.223 に答える
1
cls

コマンドを試行するたびに、難解で冗長な赤いマークをすべて取り除き、洗練された見栄えの良い画面で再開できるようにします。

于 2016-01-22T05:58:46.787 に答える
0

一部をデスクトップにコピーします。

Copy-Item $home\*.txt ([Environment]::GetFolderPath("Desktop"))
于 2010-02-03T06:12:03.653 に答える
0

Exchange 2007 のすべてのハブ サーバーでエラーのあるキュー メッセージを取得します (一部の書式設定あり)

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        
于 2009-06-01T13:48:32.767 に答える
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)
}
于 2009-12-18T13:07:09.747 に答える