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:
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 2841380763
Url: https://administrator.de/contentid/2841380763
Ausgedruckt am: 22.11.2024 um 05:11 Uhr
5 Kommentare
Neuester Kommentar
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