将.NET方法作为代理回调传递给PowerShell中的.NET对象的语法是什么?
例如:
C#:
public class Class1
{
public static void MyMethod(Action<object> obj)
{
obj("Hey!");
}
}
public class Class2
{
public static void Callback(object obj)
{
Console.Writeline(obj.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
电源外壳:
[Class1]::MyMethod([Class2]::Callback)
Run Code Online (Sandbox Code Playgroud)
这不起作用.
我正在研究 DASH,试图为最终用户优化 QoE。
我有一个视频,并使用 ffmpeg 将其编码为不同的比特率,一切都很好,并且可以使用 dash 播放该视频。
我想要的是将用户收到的片段合并为一个 m4,并将该 m4 转换为 mp4。
我在 ffmpeg 中尝试了很多方法,但它总是给我这个错误:
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x9a9e500] could not find corresponding track id 1
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x9a9e500] could not find corresponding trex
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x9a9e500] error reading header
test2.m4s: Invalid data found when processing input
Run Code Online (Sandbox Code Playgroud)
那里有segment_1.m4s。
我该如何解决这个问题?
我在一个目录中有许多SQL脚本,前缀是数字,例如

目前,我可以使用此脚本循环遍历它们:
@ECHO OFF
FOR /r . %%F IN (*.sql) DO (
ECHO File:"%%F"
)
Run Code Online (Sandbox Code Playgroud)
但是,由于Windows读取目录中文件的方式,在2之前读取10和11,等等:

如何按照前缀的顺序遍历目录中的每个文件?
我们可以在Windows资源管理器中看到按名称排序的目录文件.
如果我在Windows命令提示符下尝试相同的操作,则按名称命令不同 - 正确:
dir *.jpg /ON /B
cubierta.jpg
pag00.jpg
pag06.jpg
pag08.jpg
pag09.jpg
pag100.jpg
pag101.jpg
pag102.jpg
pag103.jpg
pag104.jpg
pag105.jpg
pag106.jpg
pag107.jpg
pag108.jpg
pag109.jpg
pag11.jpg, etc, etc, etc, ...
Run Code Online (Sandbox Code Playgroud)
有没有办法dir通过名字来订购它在哪里读取人类会做的数字?
我试图在文件夹中查找.sql文件,并根据上次写入时间对其进行过滤。根据上次写入时间,我得到了4个文件作为输出。
TestScript10.sql TestScript5.sql TestScript6.sql TestScript7.sql
现在,当我的命令尝试执行排序对象时,我在顶部看到了Testscript10而不是TestScript5,如何解决此问题?
我的代码”
$File= Get-ChildItem $FileLocation -Filter *.sql | Where-Object {$_.LastWriteTime -gt $datetime} | Sort-Object Name
Run Code Online (Sandbox Code Playgroud)
$文件输出
[DBG]:PS SQLSERVER:>> $ File
Directory: C:\SQLScripts
Run Code Online (Sandbox Code Playgroud)
模式LastWriteTime长度名字
---- ------------- ------ ----
-a --- 2014年5月22日上午10:20 61 TestScript10.sql
- a --- 2014年5月22日10:16 AM TestScript5.sql
-a --- 2014年5月22日10:24 AM 66 TestScript6.sql
-a-2014年5月22日10:10 24 Testscript7.sql
PowerShell似乎不按名称升序对对象进行排序:
dir | Sort-Object Name
Run Code Online (Sandbox Code Playgroud)
当然,我的目标是按以下顺序对元素进行排序:
1.sql
2.sql
3.sql
4.sql
5.sql
6.sql
...
...
...
Run Code Online (Sandbox Code Playgroud)
你觉得有什么出路吗?
所以,我有一个看起来像这样的版本列表:
v1.1.0
v1.2.0
v1.3.0
v1.4.0
v1.5.0
v1.7.0
v1.8.0
v1.9.0
v2.0.0
v2.1.0
v2.10.0
v2.11.0
v2.12.0
v2.2.0
v2.3.0
v2.4.0
v2.5.0
v2.6.0
v2.7.0
v2.8.0
v2.9.0
Run Code Online (Sandbox Code Playgroud)
问题是,它们的顺序不正确。我是 Powershell 的新手,所以我在尝试对它们进行排序时遇到了一些问题。我试图这样做:
$tags = git tag
$versions = $tags | %{ new-object System.Version ($_) } | sort
Run Code Online (Sandbox Code Playgroud)
但我收到此错误:
新对象:使用“1”个参数调用“.ctor”的异常:“版本字符串部分太短或太长。” 在行:1 字符:24 + $versions = $tags | %{ 新对象 System.Version ($_) } | sort + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [New-Object], MethodInvocationException +fullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand
任何人都可以帮忙吗?
我使用了如下所示的解决方案之一:
$location = Get-Location
$path = $location.tostring() + "\CHANGELOG.md"
$tags …Run Code Online (Sandbox Code Playgroud) 对不起伙计们......我是PowerShell的新手.如果有人帮助处理以下情况会很棒:
我在文件夹c:\ test中有几个文件
sample.x.x.1
sample.x.x.2
sample.x.x.3
sample.x.x.4
sample.x.x.5
Run Code Online (Sandbox Code Playgroud)
我想找到给定文件夹中名称中编号最大的文件的名称.在上面的示例中,5是最高编号,脚本应将输出文件名作为sample.xx5返回
提前致谢!