I'm having some trouble with Powershell, I have code that looks like this:
param
(
[Parameter(Mandatory=$true)]
$Array = ''
)
foreach ($member in $Array){
Write-Host "TEST"
$server = $member["server"]
$path = $member["path"]
$key = $member["key"]
Write-Host $server
Write-Host $path
Write-Host $key
}
When I provide the following line as input, the script only prints "TEST" and nothing further, but when I define $Array
within the script itself with the exact same code, the script works as expected.
@(@{"server" = "server1"; "path" = "\\path1"; "key" = "key1"}, @{"server" = "server2"; "path" = "\\path2"; "key" = "key2"}, @{"server" = "server3"; "path" = "\\path3"; "key" = "key3"})
The expected output is:
TEST
server1
\\path1
key1
TEST
server2
\\path2
key2
TEST
server3
\\path3
key3
This is my first reach into PowerShell coming from a Python background.
It seems that if this array is passed at the command line level, it works. However, if the script prompts for the input and it's entered at that point, it fails. Where am I going wrong?
To clarify, the below code works perfectly well, with each key's value being printed to the console.
$Array = @(@{"server" = "server1"; "path" = "\\path1"; "key" = "key1"}, @{"server" = "server2"; "path" = "\\path2"; "key" = "key2"}, @{"server" = "server3"; "path" = "\\path3"; "key" = "key3"})
foreach ($member in $Array){
Write-Host "TEST"
$server = $member["server"]
$path = $member["path"]
$key = $member["key"]
Write-Host $server
Write-Host $path
Write-Host $key
}