Можно ли установить DefaultDisplayPropertySet объекта в сценарии PowerShell v2?

avconv предполагает, что Ваш вывод называют "импульсом", таким образом, необходимо добавить некоторые дополнительные опции указать, что это - вход. Я использую ffmpeg из проекта FFmpeg и не avconv от ветвления, таким образом, я буду использовать ffmpeg для своих примеров.

ffmpeg -f x11grab -s hd1080 -r 30 -i :0.0 -f pulse -i default recording.ogv

, К сожалению, это не будет работать с avconv из репозитория, потому что он не был скомпилирован с --enable-libpulse насколько я знаю. Так вместо этого можно попробовать:

ffmpeg -f x11grab -s hd1080 -r 30 -i :0.0 -f alsa -i pulse recording.ogv

, Если Вы находите, что необходимо использовать -f pulse затем, необходимо будет скомпилировать. См. , Как Скомпилировать FFmpeg и x264 на Ubuntu для полного руководства. Необходимо будет дополнительно добавить libpulse-dev как зависимость и --enable-libpulse к configure строка. Также см. ПРАКТИЧЕСКОЕ РУКОВОДСТВО: Надлежащая Экранная демонстрация на Linux для некоторых хороших x11grab примеров. Это для ffmpeg, но должно, вероятно, работать на avconv.

8
задан totorocat 2 September 2009 в 21:47
поделиться

3 ответа

Вы можете привести пример вашего неработающего кода? Это должно отлично работать в версии 2. Если нет, значит, вы обнаружили ошибку.

ОБНОВЛЕНИЕ:

(удаленные комментарии о цитировании)

Я подтвердил команде PowerShell, что это действительно регресс (ошибка ).

Вы можете проголосовать за важность проблемы здесь:

https://connect.microsoft. (PowerShell MVP)

6
ответ дан 5 December 2019 в 20:18
поделиться

Я получаю те же результаты, что и вы - отображаются все 5 свойств. Я использую Powershell 2.0 RC в Vista. У меня не установлен PowerTab или PSCX.

0
ответ дан 5 December 2019 в 20:18
поделиться

Вот решение, которое я создал, чтобы обойти эту проблему:

function Set-PSObjectDefaultProperties {
param(
      [PSObject]$Object,
      [string[]]$DefaultProperties
     )

$name = $Object.PSObject.TypeNames[0]     

$xml = "<?xml version='1.0' encoding='utf-8' ?><Types><Type>"

$xml += "<Name>$($name)</Name>"

$xml += "<Members><MemberSet><Name>PSStandardMembers</Name><Members>"

$xml += "<PropertySet><Name>DefaultDisplayPropertySet</Name><ReferencedProperties>"

foreach( $default in $DefaultProperties ) {
    $xml += "<Name>$($default)</Name>"
}

$xml += "</ReferencedProperties></PropertySet></Members></MemberSet></Members>"

$xml += "</Type></Types>"

$file = "$($env:Temp)\$name.ps1xml"

Out-File -FilePath $file -Encoding "UTF8" -InputObject $xml -Force

$typeLoaded = $host.Runspace.RunspaceConfiguration.Types | where { $_.FileName -eq  $file }

if( $typeLoaded -ne $null ) {
    Write-Verbose "Type Loaded"
    Update-TypeData
}
else {
    Update-TypeData $file
}

}

Теперь вы можете использовать следующее, чтобы создать собственный объект и установить свойства по умолчанию в PowerShell V2:

$myObject = New-Object PSObject
$myObject | Add-Member NoteProperty Name 'My Object'
$myObject | Add-Member NoteProperty Property1 1
$myObject | Add-Member NoteProperty Property2 2
$myObject | Add-Member NoteProperty Property3 3
$myObject | Add-Member NoteProperty Property4 4
$myObject | Add-Member NoteProperty Property5 5
$myObject

  ## Output:
  # Name      : My Object
  # Property1 : 1
  # Property2 : 2
  # Property3 : 3
  # Property4 : 4
  # Property5 : 5

$defaultProperties = @('Name','Property2','Property4')

Set-PSObjectDefaultProperties $myObject $defaultProperties

$myObject

  ## Output:
  #Name            Property2          Property4
  #----            ---------          ---------
  #My Object       2                  4

Он также доступен через PoshCode: Set-PSObjectDefaultProperties

2
ответ дан 5 December 2019 в 20:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: