В Java все находится в форме класса.
Если вы хотите использовать любой объект, тогда у вас есть две фазы:
Пример:
Object a;
a=new Object();
То же самое для концепции массива
Item i[]=new Item[5];
i[0]=new Item();
Если вы не дают секцию инициализации, тогда возникает NullpointerException
.
Попробуйте использовать переключатель -noexit
:
powershell -noexit d:\script\foo.ps1
Мне это было нужно раньше, и обычно я не хотел изменять сценарий (обычно для сценариев, запускаемых из Планировщика заданий). Я просто хотел посмотреть, что выплевывали на консоль.
Все, что вам нужно сделать, это просто добавить команду Read-Host после вызова сценария, например:
PowerShell.exe -command { .\foo.ps1; read-host "Press enter key to continue" }
Кстати, проблема с использованием Start-Transcript заключается в том, что он не захватывает выходные данные EXE. И любая форма попытки входа в V1 и даже V2 со стандартным хостом не будет захватывать подробные потоки, потоки отладки, прогресса или предупреждений. Вы можете увидеть их, только просмотрев соответствующее окно хоста.
Один глупый, но эффективный способ перехвата всего вывода скрипта (stdout, stderr, подробный, предупреждение, отладка) - использовать другой хост, например cmd.exe, например:
cmd.exe /c powershell.exe "$pwd\foo.ps1" > foo.log
There is no ordinary Try...Catch construction in Powershell; however you can trap exceptions instead and react properly. I.E:
Function Example() {
trap [Exception] {
write-host "We have an error!";
write-error $("ERROR: " + $_.Exception.Message);
sleep 30;
break;
}
write-host "Hello world!";
throw "Something very bad has happened!";
}
You can also simulate Try...Catch construction:
Function Example2() {
${
write-host "Our try clause...";
throw "...caused an exception! It hurts!";
}
trap [Exception] {
write-error $_.Exception.Message;
sleep 30;
continue;
}
Of course as soon as you will trap an exception, you can log it, sleep, or whatever you want with the error message. My examples just sleep, allowing you to read what happened, but it's much better to log all the errors. (The simplest way is to redirect them with >>).
Look also at: http://huddledmasses.org/trap-exception-in-powershell/
У вас есть три варианта:
Вместо того, чтобы выводить что-либо в оболочку, оберните свой сценарий PowerShell вторым сценарием, который перенаправляет весь вывод в файл журнала .
PS C:> myscript.ps1 | Out-File myscript.log
Думали ли вы о перенаправлении stdout и stderr в файл ex:
./ ascript.ps1> logs 2> & 1
Примечание. В PowerShell можно создать сценарий оболочки, который вызывает ваш сценарий PowerShell со всеми необходимыми перенаправлениями.
Еще пара идей ... Вы можете использовать start-sleep в конце сценария, чтобы у вас было достаточно времени, чтобы просмотреть ошибку.
Вы также можете использовать start-transcript для записи сеанса в текстовый файл.