Я пытался создать скрипт для установки пакетов Chocolatey в PowerShell. Это прекрасно работает, но я хочу разобрать вывод из Chocolatey. Что я думаю о что-то вродеПопробуйте/поймайте PowerShell при установке пакетов Chocolatey
$package = "something I want"
try
{
$installCommand = "choco install $package"
iex $installCommand -ErrorAction Stop -WarningAction Stop
}
catch
{
#Print error messages, i.e. $_.Exception.Message
}
Я довольно новыми для PowerShell, и я попытался выяснить, как использовать TRY/поймать. Я попытался
try {
$command = "choco install asdasdasdasdasdad"
iex $command -ErrorAction Stop -WarningAction Stop
}
catch {
$message = $_.Exception.Message
Write-Host $message
}
Но это дает мне
Installing the following packages: asdasdasdasdasdad
By installing you accept licenses for the packages.
asdasdasdasdasdad not installed. The package was not found with the source(s) listed.
If you specified a particular version and are receiving this message, it is possible that the package name exists but the version does not.
Version: "" Source(s): "https://chocolatey.org/api/v2/"
Chocolatey installed 0/1 package(s). 1 package(s) failed.
See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).
Failures:
- asdasdasdasdasdad
Любые советы? Заранее благодарю вас!
Я нашел пример кода, который помогает мне на моем пути:
function testInstall
{
Param (
[string] $package
)
Begin
{
Write-Host "Now in Begin.. Going on!"
}
Process
{
Write-Host "Starting Process"
Write-Host ""
$chocoCommand = "choco install $package"
iex $chocoCommand
Write-Host ""
Write-Host "Ending Process"
}
End
{
Write-Host "Now in End"
}
}
Function Test-Demo
{
Param ($Param1)
Begin {
write-host "Starting"
}
Process {
if($_ -eq " Use --force to reinstall, specify a version to install, or try upgrade.")
{
$forceDetected = $true;
}
write-host $_
}
End {
if($forceDetected -eq $true)
{
Write-Warning "Force detected"
Write-Warning "Do you want to re-run the installer with --force?"
# Promt the user Y/N option and re-run testInstall -package $package --force
}
write-host "Ending"
}
}
testInstall -package ruby | Test-Demo Sample
Это даст мне возможность спрашивать пользователя, если он/она хочет, чтобы повторно запустить сценарий с - -force. Единственная проблема заключается в том, что выход из choco потерял свои цвета. Какие-либо предложения?
Это действительно то, что я буду думать. Спасибо за помощь! –