Скрипт Powershell не работает правильно с "паузой" в конце - PullRequest
0 голосов
/ 27 апреля 2020

У меня странная проблема с моим скриптом, который работает на двух разных серверах, на одном сервере он работает отлично, а на другом он ведет себя очень странно.

Вот код:

write-host "Cheking if App open please wait"

write-host "`n"

$open = Get-SmbOpenFile | 
          Where-Object {$_.Path -eq "d:\Shares\Share1\app.exe"} |
            Select-Object @{l="Who is using App?";e="ClientUserName"}, Path

if ($open) {
 write-host "Showing open files:"
  $open

}

else {
  write-host "all closed"
}

pause

На сервере 2012 r2 с powershell версии 3.0 он работает отлично, а на втором сервере, который работает в 2016 году, он не работает.

Итак, я начал расследование и пришел к выводу, что если я удаляю «паузу» в конце скрипта на сервере 2016 года, он работает отлично, что очень странно ..

С «паузой» в конце я получаю такой результат:

Showing open files:

Press Enter to continue...: 

Большое спасибо за вашу помощь:)

1 Ответ

0 голосов
/ 27 апреля 2020

Таблица форматов (подразумевается) ждет неопределенно 2 объекта.

Хм, таблица форматов никогда не выходит перед паузой.

[pscustomobject]@{name='joe'}; pause

Press Enter to continue...:
name
----
joe

С форматом-списком она выходит сразу:

[pscustomobject]@{name='joe'}|format-list; pause

name : joe


Press Enter to continue...: 

Это должно работать:

write-host "Cheking if App open please wait"

write-host "`n"

$open = Get-SmbOpenFile | 
          Where-Object {$_.Path -eq "d:\Shares\Share1\app.exe"} |
            Select-Object @{l="Who is using App?";e="ClientUserName"}, Path

if ($open) {
 write-host "Showing open files:"
  $open | format-list

}

else {
  write-host "all closed"
}

pause
...