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 $DebugPreference
ingesteld op Doorgaan of Stoppen.
Write-Verbose
: schrijf rechtstreeks naar de console als $VerbosePreference
ingesteld op Doorgaan of Stoppen.
De laatste is bedoeld voor extra optionele informatie, Write-Debug
voor debuggen (zo lijkt het in dit geval te passen).
Aanvullend: in PSH2 zullen (tenminste) scripts die cmdlet-binding gebruiken automatisch de schakelparameters -Verbose
en -Debug
krijgen, waardoor lokaal Write-Verbose
en Write-Debug
(dwz overschrijven van de voorkeursvariabelen) zoals gecompileerde cmdlets en providers doen.
Antwoord 2, autoriteit 40%
Powershell heeft een alias die echo
toewijst 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 echo
schrijven om de alias voor echo
te 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 on
batch-commando:
Set-PSDebug -Trace 1
Deze opdracht zal resulteren in het tonen van elke regel van het uitvoerende script:
Als de parameter
Trace
de waarde1
heeft, wordt elke regel van het script getraceerd terwijl het wordt uitgevoerd. Als de parameter de waarde2
heeft, worden ook variabele toewijzingen, functieaanroepen en scriptaanroepen getraceerd. Als de parameterStep
is opgegeven, wordt u gevraagd voordat elke regel van het script wordt uitgevoerd.
Antwoord 11
Probeer Get-Content .\yourScript.PS1
en 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
….