小编mkl*_*nt0的帖子

获取内容并显示控制字符,例如`r - 可视化字符串中的控制字符

我们可以传递什么标志Get-Content来显示控制字符,如\r\n\n

我想要做的是确定文件的行结尾是Unix还是Dos风格.我试过简单的运行Get-Content,没有显示任何行结束.我也尝试过使用Vim set list,它只显示$了行结尾的内容.

我想用PowerShell做这件事,因为那将是非常有用的.

powershell diagnostics control-characters

5
推荐指数
2
解决办法
6704
查看次数

如何通过 PowerShell 在 python 中读取文本文件?Windows 10

我在将文本文件读入 python 程序时遇到问题。

import sys

words = sys.stdin.readlines()
Run Code Online (Sandbox Code Playgroud)

我正在通过标准输入读取文件,但是当我尝试执行该程序时,出现此错误。

PS> python evil_61.py < evilwords.txt

At line:1 char:19
+ python evil_61.py < evilwords.txt
+                   ~

The '<' operator is reserved for future use.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : RedirectionNotSupported
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我如何运行这些类型的程序,因为它对我的课程至关重要,而且我宁愿使用 Windows 而不是 Linux。

python powershell

5
推荐指数
1
解决办法
3280
查看次数

使用jq传递的数字参数--arg与==的数据不匹配

以下是我的curl的示例JSON响应:

{
  "success": true,
  "message": "jobStatus",
  "jobStatus": [
    {
      "ID": 9,
      "status": "Successful"
    },
    {
      "ID": 2,
      "status": "Successful"
    },
   {
      "ID": 99,
      "status": "Failed"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我想检查ID = 2的状态.这是我试过的命令:

cat test.txt|jq --arg v "2" '.jobStatus[]|select(.ID == $v)|.status'
Run Code Online (Sandbox Code Playgroud)

回复:没有

我试着2没有引号的价值但仍然没有结果.

相比之下,如果我尝试使用文字 的命令2,它的工作原理:

cat test.txt | jq '.jobStatus[]|select(.ID == 2)|.status'
Run Code Online (Sandbox Code Playgroud)

响应:

"Successful"
Run Code Online (Sandbox Code Playgroud)

我被卡住了.任何人都可以帮我识别问题吗?

bash json parameter-passing jq

5
推荐指数
2
解决办法
1331
查看次数

powershell的并行foreach最多使用5个线程吗?

参数throttlelimit可以foreach -parallel控制执行脚本时使用多少个进程。但即使我设置的进程数大于 5,我也不能拥有throttlelimit超过 5 个进程。

该脚本在多个 powershell 进程中执行。所以我检查脚本内的PID。然后对 PID 进行分组,以便我可以知道有多少个进程用于执行该脚本。

function GetPID() {
    $PID
}

workflow TestWorkflow {
    param($throttlelimit)
    foreach -parallel -throttlelimit $throttlelimit ($i in 1..100) {
        GetPID
    }
}

foreach ($i in 1..8) {
    $pids = TestWorkflow -throttlelimit $i
    $measure = $pids | group | Measure-Object
    $measure.Count
}
Run Code Online (Sandbox Code Playgroud)

输出是

1
2
3
4
5
5
5
5
Run Code Online (Sandbox Code Playgroud)

对于$i小于或等于5,我有$i流程。但对于$i超过 5 个进程,我只有 5 个进程。有什么办法可以增加执行脚本时的进程数吗?

编辑:为了回应@SomeShinyObject的答案,我添加了另一个测试用例。这是@SomeShinyObject 给出的示例的修改。我添加了一个函数S,它除了休眠 10 …

powershell parallel.for powershell-workflow

5
推荐指数
1
解决办法
4504
查看次数

在PowerShell中创建成对的字符串值的列表

对于我正在做的项目,我需要检查并查看文件中的一行中是否存在一对字符串。

我试图使用像这样的哈希表:

$makes = 'Ferrari', 'Ford', 'VW', 'Peugeot', 'Subaru'
$models = 'Enzo', 'Focus', 'Golf', '206', 'Impreza'

$table = @{}

for ($i = 0; $i -lt $makes.Length; $i++)
{
    $table.Add($makes[$i], $models[$i])
}
Run Code Online (Sandbox Code Playgroud)

在我尝试插入重复的品牌之前,此方法效果很好。我很快发现哈希表不接受重复项。

那么有没有办法在PowerShell中创建字符串的双重列表?在C#中非常容易做到,但是我发现在PowerShell中无法实现。

powershell hashtable list

5
推荐指数
2
解决办法
2005
查看次数

Powershell:将分数转换为整数 - 令人惊讶的舍入行为

关于带小数的整数,我有一个有趣的问题.

假设我执行以下操作:

[int] $a = 5/2
$a
Run Code Online (Sandbox Code Playgroud)

我已经尝试了10次以确保,并且powershell总是返回 2

有没有办法强制Powershell在这种情况下向上或向下舍入,默认情况下它已设置为向下舍入?

我假设依赖于机器和Powershell环境,我可能在某些点得到3而在其他点得到2.

powershell integer bankers-rounding rounding

5
推荐指数
2
解决办法
1217
查看次数

Powershell 中的行延续中间字符串

我正在尝试在具有两个相同捕获卡的系统上编写 FFmpeg 命令,因此我必须使用它们的“备用名称”,否则 FFmpeg 无法理解我正在调用哪一个。

唯一的问题是备用名称非常长,尤其是通过 dshow 调用音频和视频时:

-i video="@device_pnp_\\?\usb#vid_07ca&pid_0570&mi_00#7&3886ab1a&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global":audio="@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{0E6F0DEF-2B29-4117-8D30-13F01160AC5B}"
Run Code Online (Sandbox Code Playgroud)

我想在调用音频之前打破这个“字符串”中线,以使其更具可读性,如下所示:

-i video="@device_pnp_\\?\usb#vid_07ca&pid_0570&mi_00#7&3886ab1a&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global"`
:audio="@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{0E6F0DEF-2B29-4117-8D30-13F01160AC5B}"
Run Code Online (Sandbox Code Playgroud)

然而,反引号在这种情况下似乎不起作用,我猜是因为它与角色接壤?如果 I 和反引号前有一个空格,则会破坏字符串并且 FFmpeg 会出错:

    -i video="@device_pnp_\\?\usb#vid_07ca&pid_0570&mi_00#7&3886ab1a&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global" `
:audio="@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{0E6F0DEF-2B29-4117-8D30-13F01160AC5B}"
Run Code Online (Sandbox Code Playgroud)

有没有办法在 Powershell 中将其拆分为多行?

编辑 - 全功能命令:

ffmpeg -y -hide_banner -thread_queue_size 9999 -indexmem 9999 -guess_layout_max 0 -f dshow -rtbufsize 2147.48M `
-video_size 1920x1080 -framerate 60 `
-i video="@device_pnp_\\?\usb#vid_07ca&pid_0570&mi_00#7&3886ab1a&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global":audio="@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{0E6F0DEF-2B29-4117-8D30-13F01160AC5B}" `
-thread_queue_size 9999 -indexmem 9999 -guess_layout_max 0 -f dshow -rtbufsize 2147.48M `
-video_size 1920x1080 -framerate 60 `
-i video="@device_pnp_\\?\usb#vid_07ca&pid_0570&mi_00#7&24df76f&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global":audio="@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{0A494693-5F33-4304-88D7-394757E09648}" `
-map 0:0,0:1 -map 0:1 -map 1:0,1:1 -map 1:1 -c:v h264_nvenc …
Run Code Online (Sandbox Code Playgroud)

syntax powershell readability line-continuation

5
推荐指数
1
解决办法
4007
查看次数

PowerShell管道参数绑定顺序

我有一个高级函数,可以接受两种管道数据:

  • PSTypeName 为“MyType”的自定义对象
  • 任何具有 ID 属性的对象

这是我的功能:

function Test-PowerShell {
    [CmdletBinding(DefaultParameterSetName = "ID")]
    param (
        [Parameter(
            Mandatory = $true,
            ParameterSetName = "InputObject",
            ValueFromPipeline = $true
        )]
        [PSTypeName('MyType')]
        $InputObject,

        [Parameter(
            Mandatory = $true,
            ParameterSetName = 'ID',
            ValueFromPipelineByPropertyName = $true
            )]
        [int]
        $ID
    )

    process {
        if ($InputObject) {
            $objects = $InputObject
            Write-Verbose 'InputObject binding'
        }
        else {
            $objects = Get-MyType -ID $ID
            Write-Verbose 'ID binding'
        }

        # Do something with $objects
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以这样使用这个函数:

$obj = [PSCustomObject]@{
    PSTypeName = 'MyType'
    ID …
Run Code Online (Sandbox Code Playgroud)

parameters powershell typing

5
推荐指数
1
解决办法
589
查看次数

如何使用 Bash shell 命令使 npm 项目在 Windows 上工作?

我最近接手的一个项目中有一些 NPM 脚本,如下所示:

{
    "package": "yarn package-common && mv './dist/APP® TV.wgt' ''./package/$(yarn -s filename)''",
    "package-common": "tizen package -t wgt -s APP -- ./dist && rimraf package && mkdir package",
    "filename": "cross-env-shell echo APP_${npm_package_version}.wgt",
}
Run Code Online (Sandbox Code Playgroud)

这个项目是由某人在 MAC 上编写的。我如何将以下部分转换为有效的 Powershell / cmd 命令?我还没有在任何地方找到任何关于此的信息。它运行命令并将回显值附加到它从中调用的字符串。

''./package/$(yarn -s filename)''
Run Code Online (Sandbox Code Playgroud)

或者更好的是,除了这个包之外还有其他方法可以跨平台吗?

目前,运行 yarn package 时在 powershell 中输出的消息是:

'' was unexpected at this time.
Run Code Online (Sandbox Code Playgroud)

shell powershell command-line cmd npm

5
推荐指数
1
解决办法
5693
查看次数

有没有办法以仅在将参数传递给别名时才运行的方式为 cmdlet 创建别名?

我正在尝试创建Get-Command cmdlet的别名(命名为which),如果我不发送任何参数,它就不会运行(因为如果它在没有参数的情况下运行,它会输出所有可用的命令) .

我知道这可以使用函数来完成,但我想保留选项卡完成功能,而不必编写一个相当大的函数来放入我的$PROFILE 中

简而言之,我只希望别名在传递参数时起作用。

powershell alias wrapper

5
推荐指数
1
解决办法
226
查看次数