我们可以传递什么标志Get-Content来显示控制字符,如\r\n或\n?
我想要做的是确定文件的行结尾是Unix还是Dos风格.我试过简单的运行Get-Content,没有显示任何行结束.我也尝试过使用Vim set list,它只显示$了行结尾的内容.
我想用PowerShell做这件事,因为那将是非常有用的.
我在将文本文件读入 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。
以下是我的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)
我被卡住了.任何人都可以帮我识别问题吗?
参数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 …
对于我正在做的项目,我需要检查并查看文件中的一行中是否存在一对字符串。
我试图使用像这样的哈希表:
$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中无法实现。
关于带小数的整数,我有一个有趣的问题.
假设我执行以下操作:
[int] $a = 5/2
$a
Run Code Online (Sandbox Code Playgroud)
我已经尝试了10次以确保,并且powershell总是返回 2
有没有办法强制Powershell在这种情况下向上或向下舍入,默认情况下它已设置为向下舍入?
我假设依赖于机器和Powershell环境,我可能在某些点得到3而在其他点得到2.
我正在尝试在具有两个相同捕获卡的系统上编写 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) 我有一个高级函数,可以接受两种管道数据:
这是我的功能:
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) 我最近接手的一个项目中有一些 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) 我正在尝试创建Get-Command cmdlet的别名(命名为which),如果我不发送任何参数,它就不会运行(因为如果它在没有参数的情况下运行,它会输出所有可用的命令) .
我知道这可以使用函数来完成,但我想保留选项卡完成功能,而不必编写一个相当大的函数来放入我的$PROFILE 中。
简而言之,我只希望别名在传递参数时起作用。
powershell ×9
alias ×1
bash ×1
cmd ×1
command-line ×1
diagnostics ×1
hashtable ×1
integer ×1
jq ×1
json ×1
list ×1
npm ×1
parallel.for ×1
parameters ×1
python ×1
readability ×1
rounding ×1
shell ×1
syntax ×1
typing ×1
wrapper ×1