Fehlende Ausgabe im 1. Durchlauf
Servus zusammen,
ich habe folgendes (Teil-)Script (Powershell):
Beim ersten Durchlauf erhalte ich bei Zeile 52
eine leere Ausgabe (rote Markierung im Screenshot), dafür aber beim zweiten Durchlauf das Ergebnis des ersten und des aktuellen Durchlaufs (gelbe Markierung im Screenshot).
Danach läuft alles, wie es soll...
Auch ein doppeltes Ausführen der Zeile 52 oder ein Start-Sleep hat nichts gebracht.
Kann mir jemand sagen, woran das liegen kann?
Hier mal die Ein-/Ausgabe als Screenshot:
ich habe folgendes (Teil-)Script (Powershell):
Connect-ExchangeOnline
$menu = "y"
while($menu -eq "y" -or $menu -eq "Y")
{
$tmp_arr = Get-MigrationUser -ResultSize Unlimited | select Identity, BatchId, Status, *ItemCount, DataConsistencyScore
$res = $tmp_arr | ft Identity, BatchId, Status, *ItemCount, DataConsistencyScore | Out-String
$res = $res.Trim()
$i=1
$z=1
foreach($data in $($res -split "`r`n"))
{
if($z -gt 2)
{
if($i -lt 10)
{
Write-Host " $i) $data"
}
else
{
Write-Host "$i) $data"
}
$i = $i+1
}
else
{
Write-Host "`t$data"
$z = $z + 1
}
}
Write-Host " "
Write-Host " 0) END"
do
{
$max_i = $i-1
$input = Read-Host "Select entry (1 - $max_i)"
$input_value = $input -as [int]
}while($input_value -lt 0 -or $input_value -gt $max_i)
if($input_value -eq 0)
{
Write-Host "END"
}
else
{
$num = $input_value-1
$tmp_arr[$num].Identity
Get-MoveRequest -Identity $tmp_arr[$num].Identity | Get-MoveRequestStatistics
}
Write-Host " "
$menu = Read-Host "start over? (y/n)"
}
Beim ersten Durchlauf erhalte ich bei Zeile 52
Get-MoveRequest -Identity $tmp_arr[$num].Identity | Get-MoveRequestStatistics
Danach läuft alles, wie es soll...
Auch ein doppeltes Ausführen der Zeile 52 oder ein Start-Sleep hat nichts gebracht.
Kann mir jemand sagen, woran das liegen kann?
Hier mal die Ein-/Ausgabe als Screenshot:

Please also mark the comments that contributed to the solution of the article
Content-Key: 2841380763
Url: https://administrator.de/contentid/2841380763
Printed on: December 7, 2023 at 23:12 o'clock
5 Comments
Latest comment
Ja, bei manchen CMDLets muss man manchmal sagen wie sie etwas ausgeben soll, sonst bleibt das manchmal im Puffer hängen
.
Grüße Uwe
$input -as [int]
Achtung für die Zukunft: Special Variable Names$INPUT Represents an enumerator that enumerates all input that is passed to a function.
Grüße Uwe
Moin,
ist doppelt gemoppelt. Powershell ist per default case insensitive. Daher: "y" ist das gleiche wie "Y".
Möchte man explizit Groß- und Kleinschreibung berücksichtigt haben, so muss man -ceq statt -eq verwenden.
Darüber hinaus sind Befehle wie format-table und out-string eigentlich nur für die Ausgabe gedacht. Du solltest dir besser angewöhnen, die Powershell-Objekte zu verarbeiten, statt diese in Zeichenketten umzuwandeln.
Gruß Thomas
ist doppelt gemoppelt. Powershell ist per default case insensitive. Daher: "y" ist das gleiche wie "Y".
Möchte man explizit Groß- und Kleinschreibung berücksichtigt haben, so muss man -ceq statt -eq verwenden.
Darüber hinaus sind Befehle wie format-table und out-string eigentlich nur für die Ausgabe gedacht. Du solltest dir besser angewöhnen, die Powershell-Objekte zu verarbeiten, statt diese in Zeichenketten umzuwandeln.
Gruß Thomas
Solche Menüs kann man sich in der Regel ersparen und die Auswahl mit Out-GridView und -Passthru abfackeln:
Get-MigrationUser -ResultSize Unlimited | select Identity, BatchId, Status, *ItemCount, DataConsistencyScore | Out-GridView -PassThru -Title "Bitte wählen sie den/die User" | Get-MoveRequest | Get-MoveRequestStatistics | ft