相关疑难解决方法(0)

如何在PowerShell中将输出捕获到外部进程的变量中?

我想运行一个外部进程并将其命令输出捕获到PowerShell中的变量.我目前正在使用这个:

$params = "/verify $pc /domain:hosp.uhhg.org"
start-process "netdom.exe" $params -WindowStyle Hidden -Wait
Run Code Online (Sandbox Code Playgroud)

我已经确认命令正在执行但我需要将输出捕获到变量中.这意味着我无法使用-RedirectOutput,因为这只会重定向到文件.

powershell process

140
推荐指数
7
解决办法
24万
查看次数

在 PowerShell 中使用变量将多个参数传递给外部程序

我下载了用于合并 junit 报告的 npm 包 - https://www.npmjs.com/package/junit-merge

问题是我有多个文件要合并,并且我正在尝试使用字符串变量来保存要合并的文件名。

当我自己编写脚本时,如下所示:

junit-merge a.xml b.xml c.xml 
Run Code Online (Sandbox Code Playgroud)

这有效,正在创建合并文件,但是当我这样做时

$command = "a.xml b.xml c.xml"
junit-merge $command
Run Code Online (Sandbox Code Playgroud)

这是行不通的。错误是

错误:找不到文件

有人遇到过类似的问题吗?

powershell junit parameter-passing parameter-splatting

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

Powershell避免cmd 8191字符限制

我正在创建一个 PowerShell,它使用以下命令运行一个简单的 Java 程序:

Start-Process -filepath .\java.exe -ArgumentList "Input" -NoNewWindow
Run Code Online (Sandbox Code Playgroud)

在本例中,Input 类只是接受并打印一个字符串。

我期望长度大于cmd.exe8191 个字符限制的字符串,因此我需要在 PS 中运行它。

当前场景:

  • 在 PS 中直接运行上述命令可以工作并Input接受大于 8191 个字符的字符串。
  • 将命令保存在 ps1 文件中并运行它,会出现一个 PS 窗口,但 cmd 在达到 8191 个字符限制时在幕后运行。

-Wait也尝试添加,但运气不佳。

任何想法?

powershell cmd max

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

pwsh -命令正在删除引号

在 pwsh 中调用以下命令:

Write-Host '{"drop_attr": "name"}' 
Run Code Online (Sandbox Code Playgroud)

结果正常:

{"drop_attr": "name"}
Run Code Online (Sandbox Code Playgroud)

现在通过 pwsh 执行相同操作:

pwsh -Command Write-Host '{"drop_attr": "name"}'
Run Code Online (Sandbox Code Playgroud)

结果缺少引号和方括号?

drop_attr: name
Run Code Online (Sandbox Code Playgroud)

powershell

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

通过重新格式化现有文件名重命名文件 - 将占位符替换为与-replace运算符一起使用的替换字符串

我有一些像这样的视频文件: VideoName_s01e01.mp4季节和剧集是变量.我想在s??和之间添加一个下划线("_")e??.

我一直在使用进行重命名,我有一个起点:

GCI $path -filter '*_s??e??*' -rec |  Ren -new { $_.name -replace '_s[0-9][0-9]', '_s[0-9]_[0-9]_' } -passthru    
Run Code Online (Sandbox Code Playgroud)

这实际上重命名了我的文件VideoName_s[0-9]_e[0-9].mp4.

基本上,我正在寻找s??e??我不知道如何在替换部分中使它们成为变量的字符.

我认为最好的方法是:

  1. 找到e??s??(我们称之为X)的位置.
  2. 将字符串拆分为X-3.
  3. 将字符串连接_到中间的" ".

powershell replace rename file

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