Если вы запустили это ...
WmiObject Win32_Process -Filter "Name='powershell.exe' AND CommandLine LIKE '%test.ps1%'"
… и он ничего не возвратил, значит, он не работает, не запускается и не закрывается.
Я только что попробовал то, что вы опубликовали, и вышеизложенное тянет за линию процесса, как ожидалось.
# begin test.ps1 script
Param
(
$parm1,
$parm2,
$parm3
)
'hello'
# end test.ps1 script
# SCC is a alias for a function I have to shell out to the console host as needed
# aka Start-ConsoleCommand
# it has code to prevent the console host from closing so I can work in it if needed.
scc -ConsoleCommand '.\test.ps1 -parm1 abc1 -parm2 abc2 -parm3 abc3
# console window results
hello
Проверьте информацию о процессе
Get-WmiObject Win32_Process -Filter "Name='powershell.exe' AND CommandLine LIKE '%test.ps1%'"
# Results
...
Caption : powershell.exe
CommandLine : "C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe" -NoExit -Command &{ .\test.ps1 -parm1 abc1 -parm2 abc2 -parm3 abc3
...
Тем не менее, ваш заявленный вариант использования довольно странный. Поскольку, поскольку вы в первую очередь запускаете код и говорите, что вы хотите, чтобы он запускался только один раз, зачем зачем его запускать снова, просто чтобы проверить, что, как вы уже знаете, выполняется?
Если вы говорите, вам нужно запускать его несколько раз последовательно, а затем делать это последовательно.
Если вы говорите, что любой пользователь может использовать ваше приложение с любого компьютера, то у вас по-прежнему будет работать только одно приложение с разных компьютеров, поэтому проверка действительно спорная. Если ваш код не работает (действия по созданию-обновлению-удалению) с теми же файлами / базой данных, и пытается избежать ошибок, когда другие пользователи пытаются использовать ваш код для обработки.