小编mig*_*llo的帖子

拆分文件名 - 奇怪的行为

我正在尝试拆分文件名,例如 XXX_YYYY-YYYY_fff.xxx

如果我正在使用

'XXX_YYYY-UUUU_fff.xxx' -split '[-_`.]'
Run Code Online (Sandbox Code Playgroud)

一切正常,显示:

XXX
YYYY
UUUU
fff
xxx
Run Code Online (Sandbox Code Playgroud)

但是当我使用

'XXX_YYYY-UUUU_fff.xxx' -split '[_-`.]'
Run Code Online (Sandbox Code Playgroud)

它不会在破折号上拆分:

XXX
YYYY-UUUU
fff
xxx
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么?

string powershell split

4
推荐指数
1
解决办法
46
查看次数

如果使用 -Wait 参数运行,如何在 powershell 中更改进程的优先级?

我正在使用预定的 PowerShell 脚本在循环中多次使用各种参数启动相同的进程。过程计算量很大,运行时间很长,我有数千次迭代。我注意到,因为它是一个预定脚本,所以它以低于正常的优先级运行。即使我碰到它,任何产生的进程仍然低于正常。因此,由于我在循环中运行此过程数千次,因此我需要-Wait像这样使用:

foreach($list in $lists){

        Start-Process -FilePath $path_to_EXE -ArgumentList $list -NoNewWindow -Wait

}
Run Code Online (Sandbox Code Playgroud)

现在,我想提高优先级,我发现的一种方法是这样做:

($MyProcess = Start-Process -FilePath $path_to_EXE -ArgumentList $list  -NoNewWindow -Wait -PassThru).PriorityClass = [System.Diagnostics.ProcessPriorityClass]::AboveNormal
Run Code Online (Sandbox Code Playgroud)

但是,它不起作用,因为它需要等到进程完成,然后执行括号外的任何内容:(...).PriorityClass = ... 我不能让它继续循环并产生数千个进程,我需要一次运行一个,但是我如何告诉它提高优先级,然后等待?

powershell wait start-process

3
推荐指数
1
解决办法
40
查看次数

Powershell:当数组中只剩下一个对象时,如何正确计算对象数组中的项目数

我有一个对象数组,每个对象都有 N 个属性。我使用这样的方法执行子集操作Where-Object,例如:

$mySubset = $myArrayOfObjects | Where-Object {($_.Property1 -eq 'ABC') -and ($_.Property2 -eq 'DEF')}
Run Code Online (Sandbox Code Playgroud)

然后我需要检查这个数组中有多少个对象。我这样做:

$mySubset.Count
Run Code Online (Sandbox Code Playgroud)

当子集数组中有多个对象时,它会显示对象的数量。但是,当我只剩下一个对象时$mySubset,它不会将其视为只有一个元素的数组,而是$mySubset.Count返回 N - 每个对象中的属性数量。这就是问题。在这种情况下,如何说服 Powershell 将$mySubset其视为包含 1 项的数组?

arrays powershell psobject

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

powershell ×3

arrays ×1

psobject ×1

split ×1

start-process ×1

string ×1

wait ×1