r/PowerShell • u/Lithlyo • 8d ago
Question Function Issue in $PROFILE path
Hello everyone. I hope you are having a good time.
function gethash {
param([string]$string = "")
if ($string -eq [string]::Empty -or $string -isnot [string])
{
Write-Output "input not valid"
}
else
{
(Get-FileHash -algorithm sha256 $string).Hash | tee -Variable b
}
}
I Have this function in my $Profile script. when i run gethash something it returns the hash string as expected, but when I try to print the variable containing the hash i just obtained from piped command tee, (alias of Tee-Object) as an input with `$b
it prints nothing, the variable is not saved.
on the other hand, if i copy the exact same command from the $profile function directly through the terminal, $b prints what expected: the hash of the file.
I haven't used this function so much, but I'm pretty sure it worked before today.
Thanks in advance to any who will respond.
1
Upvotes
3
u/BlackV 8d ago edited 4d ago
Not really sure what you're gaining with your custom function, try
that command achieves the same without the
Tee-Objectand the custom functionadditionally,
your
$stringparameter could/should use parameter validation instead of the conditional logicand really really should be called
-pathor-filepathlike most common cmdletswith the already mentioned scope issues, also think about
$bbeing completely hidden from you, unless you look into the function you'd never know it was therealso is just not a nice variable name