Ho bisogno di aggiungere una (relativamente) piccola pausa tra due serie di codice perché la seconda metà deve avere la prima metà eseguita correttamente prima dell'esecuzione - ma PowerShell a volte ottiene un po 'più avanti di sé e procede prima del completamento del comando precedente.Powershell: sospensione mid-pipeline
Proprio per il contesto, questo è il codice con cui sto lavorando:
Initialize-Disk -PassThru -PartitionStyle GPT -Confirm:$false `
| New-Partition -DriveLetter D -UseMaximumSize
Spesso questo viene a mancare perché l'unità non è completamente inizializzato per il momento in PowerShell esegue il New-Partition
.
genere userei qualcosa di simile:
Initialize-Disk -PassThru -PartitionStyle GPT -Confirm:$false
Start-Sleep -Seconds 2
New-Partition -DriveLetter D -UseMaximumSize
Tuttavia il problema è che l'oggetto di output di Initialize-Disk
si perde e New-Partition
non ottiene un oggetto di input.
Ho provato a mettere il Start-Sleep
in cantiere:
Initialize-Disk -PassThru -PartitionStyle GPT -Confirm:$false `
| Start-Sleep -Seconds 2 `
| New-Partition -DriveLetter D -UseMaximumSize
... ma viene generata un'eccezione come Start-Sleep
non sa come dare un senso l'oggetto di input (che è abbastanza giusto).
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; dr: Come posso aggiungere una pausa nel mio codice pur mantenendo l'oggetto di output del cmdlet precedente?
Per quello che vale, questo non ha funzionato per me. – Bink