gpt4 book ai didi

Powershell:在管道中休眠

转载 作者:行者123 更新时间:2023-12-04 17:36:57 26 4
gpt4 key购买 nike

我需要在两组代码之间添加一个(相对)小的暂停,因为后半部分需要在运行前成功执行前半部分——但 PowerShell 有时会提前一点,并在前一个命令完全完成之前继续执行。

仅就上下文而言,这是我正在使用的代码:

Initialize-Disk -PassThru -PartitionStyle GPT -Confirm:$false `
| New-Partition -DriveLetter D -UseMaximumSize

这通常会失败,因为在 PowerShell 执行 New-Partition 时驱动器尚未完全初始化。 .

通常我会使用类似的东西:
Initialize-Disk -PassThru -PartitionStyle GPT -Confirm:$false
Start-Sleep -Seconds 2
New-Partition -DriveLetter D -UseMaximumSize

然而问题是 Initialize-Disk 的输出对象丢失和 New-Partition没有得到输入对象。

我试着把 Start-Sleep在管线中:
Initialize-Disk -PassThru -PartitionStyle GPT -Confirm:$false `
| Start-Sleep -Seconds 2 `
| New-Partition -DriveLetter D -UseMaximumSize

...但它抛出异常 Start-Sleep不知道如何理解输入对象(这很公平)。
Start-Sleep : The input object cannot be bound to any parameters for the command either because the command does not take pipeline 
input or the input and its properties do not match any of the parameters that take pipeline input.
At C:\Users\Administrator\Desktop\test.ps1:104 char:87
+ ... nfirm:$false | Start-Sleep -Seconds 2 `
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (MSFT_Disk (Obje...11E2-93F2-0...):PSObject) [Start-Sleep], ParameterBindingException
+ FullyQualifiedErrorId : InputObjectNotBound,Microsoft.PowerShell.Commands.StartSleepCommand

tl;博士:如何在保留前面 cmdlet 的输出对象的同时在我的代码中添加暂停?

最佳答案

您可以尝试使用后台作业:

Initialize-Disk -PassThru -PartitionStyle GPT -Confirm:$false -asjob |
wait-job | receive-job | New-Partition -DriveLetter D -UseMaximumSize

关于Powershell:在管道中休眠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15633485/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com