Question Mauvais ordre affichage des commandes

Plus d'informations
il y a 4 ans 4 mois #29456 par DUBOIS
Bonjour,
Je suis actuellement en train d'écrire mon premier script en powershell et j'observe un comportement d'affichage assez étrange... (du moins pour moi!)

Lors de l'exécution de mon script je constate que l'affichage du résultat de mes commandes ne suit pas l'ordre des commandes de mon script.:blink: :dry:

Pourriez-vous m'éclairé sur ce comportement ?

Merci d'avance.


Voici le script :

[code:1]$ServerInstSrc = \"SRV1\"
$ServerInstDest = \"SRV1\DEV\"
$BackupDir = \"D:\DBBACKUP\"
$RepoGIT = \"D:\RepoGIT\\"
$DataBaseNaME = \"AdventureWorks2017\"
$basicDbUsers = \"dbo\",\"guest\",\"INFORMATION_SCHEMA\",\"sys\"

Write-Output \"Backup database $DatabaseName from $ServerInstSrc...\"
Backup-DbaDatabase -SqlInstance $ServerInstSrc -Path $BackupDir -Database $DataBaseNaME
$DBLatestBck = (Get-ChildItem -Path $BackupDir | Select-Object -last 1).FullName

Write-Output \"Restoring $DatabaseName on $ServerInstDest...\"
Restore-DbaDatabase -SqlInstance $ServerInstDest -Path $DBLatestBck -DatabaseName $DataBaseNaME -WithReplace

Write-Output \"Removing orphaned users..\"`n
Remove-DbaDbOrphanUser -SqlInstance $ServerInstDest -Database $DataBaseNaME -Force

#Clone repository GITLIST
Write-Output \"Cloning GIT repository...\"
if ( Test-Path -Path 'D:\RepoGIT\'){
Remove-Item -Path 'D:\RepoGIT\*' -Recurse -Force
git clone ssh://xxxxx@mon_nom_de_serveur/home/db_rights/db/.git D:\RepoGIT
Write-Output `n
}
[/code:1]

et voici l'output :

[code:1]Backup database AdventureWorks2017 from SRV1...

Cloning into 'D:\RepoGIT'...
remote: Counting objects: 5995, done.
remote: Compressing objects: 100% (5876/5876), done.
remote: Total 5995 (delta 2386), reused 0 (delta 0)
Receiving objects: 100% (5995/5995), 654.19 KiB | 2.10 MiB/s, done.
Resolving deltas: 100% (2386/2386), done.
SqlInstance Database Type TotalSize DeviceType Start Duration End

----



---
SRV1 AdventureWorks2017 Full 206,08 MB Disk 2019-11-20 08:12:32.000 00:00:01 2019-11-20 08:12:33.000
Restoring AdventureWorks2017 on SRV1\DEV...

ComputerName : SRV1
InstanceName : DEV
SqlInstance : SRV1\DEV
BackupFile : D:\DBBACKUP\AdventureWorks2017_201911200812.bak
BackupFilesCount : 1
BackupSize : 206,08 MB
CompressedBackupSize : 206,08 MB
Database : AdventureWorks2017
Owner : XXXX\xxxxxx
DatabaseRestoreTime : 00:00:01
FileRestoreTime : 00:00:01
NoRecovery : False
RestoreComplete : True
RestoredFile : AdventureWorks2017.mdf,AdventureWorks2017_log.ldf
RestoredFilesCount : 2
Script : {RESTORE DATABASE [AdventureWorks2017] FROM DISK = N'D:\DBBACKUP\AdventureWorks2017_201911200812.bak' WITH FILE = 1, MOVE N'AdventureWorks2017' TO N'C:\Program Files\Microsoft SQL
Server\MSSQL14.DEV\MSSQL\DATA\AdventureWorks2017.mdf', MOVE N'AdventureWorks2017_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL14.DEV\MSSQL\DATA\AdventureWorks2017_log.ldf', NOUNLOAD,
REPLACE, STATS = 10}
RestoreDirectory : C:\Program Files\Microsoft SQL Server\MSSQL14.DEV\MSSQL\DATA
WithReplace : True

Removing orphaned users..


Cloning GIT repository...
[/code:1]



et voici l'output tel qu'il devrait être logiquement (en suivant l'ordre des commmandes):

[code:1]Backup database AdventureWorks2017 from SRV1...


SqlInstance Database Type TotalSize DeviceType Start Duration End

----



---
SRV1 AdventureWorks2017 Full 206,08 MB Disk 2019-11-20 08:12:32.000 00:00:01 2019-11-20 08:12:33.000

Restoring AdventureWorks2017 on SRV1\DEV...

ComputerName : SRV1
InstanceName : DEV
SqlInstance : SRV1\DEV
BackupFile : D:\DBBACKUP\AdventureWorks2017_201911200812.bak
BackupFilesCount : 1
BackupSize : 206,08 MB
CompressedBackupSize : 206,08 MB
Database : AdventureWorks2017
Owner : XXXX\xxxxxx
DatabaseRestoreTime : 00:00:01
FileRestoreTime : 00:00:01
NoRecovery : False
RestoreComplete : True
RestoredFile : AdventureWorks2017.mdf,AdventureWorks2017_log.ldf
RestoredFilesCount : 2
Script : {RESTORE DATABASE [AdventureWorks2017] FROM DISK = N'D:\DBBACKUP\AdventureWorks2017_201911200812.bak' WITH FILE = 1, MOVE N'AdventureWorks2017' TO N'C:\Program Files\Microsoft SQL
Server\MSSQL14.DEV\MSSQL\DATA\AdventureWorks2017.mdf', MOVE N'AdventureWorks2017_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL14.DEV\MSSQL\DATA\AdventureWorks2017_log.ldf', NOUNLOAD,
REPLACE, STATS = 10}
RestoreDirectory : C:\Program Files\Microsoft SQL Server\MSSQL14.DEV\MSSQL\DATA
WithReplace : True

Removing orphaned users..

Cloning GIT repository...

Cloning into 'D:\RepoGIT'...
remote: Counting objects: 5995, done.
remote: Compressing objects: 100% (5876/5876), done.
remote: Total 5995 (delta 2386), reused 0 (delta 0)
Receiving objects: 100% (5995/5995), 654.19 KiB | 2.10 MiB/s, done.
Resolving deltas: 100% (2386/2386), done.
[/code:1]

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 4 ans 4 mois #29459 par Laurent Dardenne
Salut,
sdub écrit:

Pourriez-vous m'éclairer sur ce comportement ?

Git, prg externe, adresse l'écran et PS un pipeline dont le contenu est émis sur la console en fin de traitement.

Write-Output est destiné à l'émission de données pas à l'affichage d'informations, write-host étant préférable, quoique ...
Le pb ici est l'usage de deux flux, donc l'un est synchrone l'autre asynchrone.
La lecture de l'ordre d'affichage dans le script est donc trompeur.<br><br>Message édité par: Laurent Dardenne, à: 20/11/19 18:28

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.061 secondes
Propulsé par Kunena