Echo-equivalent in PowerShell voor scripttesten

Ik wil variabelen en waarden uitvoeren in een PowerShell-script door vlaggen en het zien van de gegevens in het hele script.

Hoe zou ik dit doen?

Wat is bijvoorbeeld het PowerShell-equivalent van de volgende PHP-code?

echo "filesizecounter: " . $filesizecounter 

Antwoord 1, autoriteit 100%

Er zijn verschillende manieren:

Write-Host: Schrijf rechtstreeks naar de console, niet opgenomen in de functie/cmdlet-uitvoer. Hiermee kunt u de voor- en achtergrondkleur instellen.

Write-Debug: schrijf rechtstreeks naar de console als $DebugPreferenceingesteld op Doorgaan of Stoppen.

Write-Verbose: schrijf rechtstreeks naar de console als $VerbosePreferenceingesteld op Doorgaan of Stoppen.

De laatste is bedoeld voor extra optionele informatie, Write-Debugvoor debuggen (zo lijkt het in dit geval te passen).

Aanvullend: in PSH2 zullen (tenminste) scripts die cmdlet-binding gebruiken automatisch de schakelparameters -Verboseen -Debugkrijgen, waardoor lokaal Write-Verboseen Write-Debug(dwz overschrijven van de voorkeursvariabelen) zoals gecompileerde cmdlets en providers doen.


Antwoord 2, autoriteit 40%

Powershell heeft een alias die echotoewijst aan Write-Output, dus u kunt het volgende gebruiken:

echo "filesizecounter : $filesizecounter"

Antwoord 3, autoriteit 11%

PowerShell interpoleert, nietwaar?

In PHP

echo "filesizecounter: " . $filesizecounter 

kan ook worden geschreven als:

echo "filesizecounter : $filesizecounter"

In PowerShell zou iets als dit aan uw behoeften moeten voldoen:

Write-Host "filesizecounter: $filesizecounter"

Antwoord 4, autoriteit 8%

Write-Host "filesizecounter : " $filesizecounter 

Antwoord 5, autoriteit 4%

Veruit de gemakkelijkste manier om in powershell te echoën, is door gewoon het string-object te maken en de pijplijn het te laten uitvoeren:

$filesizecounter = 8096
"filesizecounter : $filesizecounter"

Natuurlijk geeft u enige flexibiliteit op wanneer u de Write-*-methoden niet gebruikt.


Antwoord 6, autoriteit 3%

De Write-host werkt prima.

$Filesize = (Get-Item $filepath).length;
Write-Host "FileSize= $filesize";

Antwoord 7, Autoriteit 3%

echo is alias tot schrijf-output Hoewel het eruit ziet hetzelfde als schrijf-host .

Het is niet Wat is het verschil tussen echo en schrijf-host in PowerShell? .

ECHO is een alias voor schrijfopbrengst, die schrijft naar de succesuitgangsstroom. Hierdoor kan de uitgang via pijpleidingen worden verwerkt of in bestanden worden omgeleid. Write-Host schrijft rechtstreeks op de console, zodat de uitvoer niet verder kan worden doorverwezen / verwerkt.


Antwoord 8, Autoriteit 2%

Ik weet niet of het verstandig is om dit te doen, maar je kunt gewoon

schrijven

"filesizecounter: " + $filesizecounter

en het moet uitvoeren:

FilesiMECOUNTER: VALUE


Antwoord 9

PowerShell heeft aliassen voor verschillende gemeenschappelijke opdrachten zoals echo. Typ het volgende in PowerShell:

Get-Alias echo

Om een ​​reactie te krijgen:

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           echo -> Write-Output

Get-alias heeft een alias gal -> Get-Alias. U kunt gal echoschrijven om de alias voor echote krijgen.

gal echo

Andere aliassen worden hier vermeld:
https:// docs.microsoft.com/en-us/powershell/scripting/learn/using-familiar-command-names?view=powershell-6

cat dir mount rm cd echo move rmdir chdir erase popd sleep clear h ps sort cls history pushd tee copy kill pwd type del lp r write diff ls ren


Antwoord 10

Er moet ook worden vermeld dat Set-PSDebuglijkt op het old-school echo onbatch-commando:

Set-PSDebug -Trace 1

Deze opdracht zal resulteren in het tonen van elke regel van het uitvoerende script:

Als de parameter Tracede waarde 1heeft, wordt elke regel van het script getraceerd terwijl het wordt uitgevoerd. Als de parameter de waarde 2heeft, worden ook variabele toewijzingen, functieaanroepen en scriptaanroepen getraceerd. Als de parameter Stepis opgegeven, wordt u gevraagd voordat elke regel van het script wordt uitgevoerd.


Antwoord 11

Probeer Get-Content .\yourScript.PS1en je zult de inhoud van je script zien.

u kunt deze regel ook in uw scriptcode invoegen:

get-content .\scriptname.PS1
script code
script code

….

Other episodes