Подтвердить что ты не робот

Полезные PowerShell

Предоставьте одну строку PowerShell script, которую вы сочтете полезной, за один script за ответ.

Здесь есть аналогичный , но в нем приведены только ссылки на страницы со сценариями, даются ответы один за другим здесь и есть список наиболее часто используемых или наиболее полезные скрипты.

  • Список последних версий файлов

    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 e.g start foo.xls)

    ii foo.xls

  • Извлекает и отображает пути к системе Специальная папка

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

  • Скопировать значение среды в буфер обмена (так что теперь вы знаете, как использовать буфер обмена!)

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

С SnapIns

  • Файлы между двумя номерами наборов изменений в TFS

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

  • Получает сообщения очереди с ошибками по всем серверам-концентраторам в обмен 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

4b9b3361

Ответ 1

Примерно в 6:00 вечера....

exit

Ответ 2

Ну, вот я часто использую вместе с некоторыми объяснениями.

ii.

ii ​​- псевдоним для Invoke-Item. Этот командный файл, по существу, вызывает любую команду, зарегистрированную в Windows для следующего элемента. Итак:

ii foo.xls

Откроется foo.xls в Excel (если у вас установлен Excel, а файлы .xls связаны с Excel).

В ii . . ссылается на текущий рабочий каталог, поэтому команда заставит Windows Explorer открываться в текущем каталоге.

Ответ 3

Список всех файлов, которые я обновил сегодня:

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

Ответ 4

Мой любимый powerhall один вкладыш

gps programThatIsAnnoyingMe | kill

Ответ 5

($x=new-object xml).Load("http://rss.slashdot.org/Slashdot/slashdot");$x.RDF.item|?{$_.creator-ne"kdawson"}|fl descr*

Мой любимый: это читатель slashdot без ужасных заявлений от mr. kdawson. Он рассчитан на менее чем 120 символов, что позволяет использовать его в качестве подписи на/.

Ответ 6

Подавить Visual Studio 2012 ВСЕ меню CAPS - самое первое, что я делаю после установки VS2012.

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

Благодаря Richard Banks, который обнаружил значение реестра.

Ответ 7

Я смущаюсь перечислять мой список однострочных наборов PowerShell один за другим, поскольку в списке насчитывается всего около 400 записей!:-) Но вот несколько из моих фаворитов, чтобы заинтересовать вас:

  • Список всех ускорителей типов (требуется PSCX): [accelerators]::get
  • Преобразование строкового представления XML в фактический XML: [xml]"<root><a>...</a></root>"
  • Сбросьте объект (увеличьте глубину для более подробной информации): $PWD | ConvertTo-Json -Depth 2
  • Вызов команды из истории подстрокой (поиск ранее "cd" cmd): #cd
  • Доступное значение перечисления С#: [System.Text.RegularExpressions.RegexOptions]::Singleline
  • Создать гистограмму (требуется Jeff Hicks cmdlet): ls . | select name,length | Out-ConsoleGraph -prop length -grid

Вся коллекция является общедоступной в серии из 4 частей, опубликованной на Simple-Talk.com. Я надеюсь, что это будет полезно для читателей SO!

Я хотел назвать серию "Do Anything in One Line of PowerShell", но мой редактор хотел что-то более кратким, поэтому мы пошли с PowerShell One-Liners. Хотя в интересах полного раскрытия, только 98% или около того действительно являются однолинейными в истинном духе этого термина; Я думал, что это было достаточно близко, округляя...: -)

Ответ 8

Извлекает и отображает пути к специальной папке

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

Ответ 9

Это показывает, какие процессы используют версии DLL-библиотек MS CRT:

gps | select ProcessName -exp Modules -ea 0 | 
  where {$_.modulename -match 'msvc'} | sort ModuleName | 
  Format-Table ProcessName -GroupBy ModuleName

Ответ 10

Это может быть обман, поскольку у меня установлена ​​привязка TFS PowerTools, но это очень полезно для определения, какие файлы были изменены между двумя наборами изменений, версиями или ярлыками.

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

Ответ 11

Мне показалось полезным показать значения переменных среды

dir env:

И вы также можете скопировать значение env в буфер обмена

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

(вам нужно, чтобы перед вызовом были загружены файлы windows.form: Add-Type -a system.windows.forms и запустить PowerShell с ключом -STA)

Ответ 12

Мне не нравятся сложные приложения для подсчета строк кода, особенно потому, что я считаю это фиктивной метрикой в ​​первую очередь. Вместо этого я использую однострочный PS:

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

Я просто включаю расширения файлов, которые я хочу включить в счетчик строк, и перейдите к нему из корневого каталога проекта.

Ответ 13

вывести вывод чего-то в буфер обмена

ls | clip

Ответ 14

Сгенерировать в файле некоторые псевдослучайные байты.

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

Алгоритм Get-Random берет семя из системных часов, поэтому не используйте его для серьезных криптографических потребностей.

Ответ 15

Получает сообщения очереди с ошибками по всем серверам-концентраторам в 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        

Ответ 16

Отображение функций Система Время работы Я использую это для моей таблицы учета

    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)
}

Ответ 17

Скопируйте часть на рабочий стол:

Copy-Item $home\*.txt ([Environment]::GetFolderPath("Desktop"))

Ответ 18

Список всех поставщиков Windows в альфа-порядке:

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

Фактически вы можете использовать это с подстановочным знаком для любой определенной группы поставщиков:

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

Ответ 19

cls

Избавьтесь от всех трудноразрешимых красных отметок после каждой из моих попыток, позволив мне возобновить работу с красивым шикарным прозрачным экраном.