Passing HashTable to PowerShell Runbook
I think, I read all related posts, still cannot make this work.
I have an Azure Runbook that needs a HashTable parameter passed to a provisioning script. This is used later by the Apply-PnPTemplate
function.
Parameters declared in the script as
[System.Collections.Hashtable] $Parameters = @{}
but I also tried
[Object] $Parameters = @{}
I try to test my script, add @{"customercode"="TEST"}
as parameter, but I get this error message:
Cannot convert the "@{"customercode"="TEST"}" value of type "System.String" to type "System.Collections.Hashtable".
What I tried: passing with and without @
, changing the delimiter to ;;
(I need use this in PowerApps too) and ,
, none of them helped. Please advise, what is the correct way of passing this object to the script.
azure-powershell azure-automation
add a comment |
I think, I read all related posts, still cannot make this work.
I have an Azure Runbook that needs a HashTable parameter passed to a provisioning script. This is used later by the Apply-PnPTemplate
function.
Parameters declared in the script as
[System.Collections.Hashtable] $Parameters = @{}
but I also tried
[Object] $Parameters = @{}
I try to test my script, add @{"customercode"="TEST"}
as parameter, but I get this error message:
Cannot convert the "@{"customercode"="TEST"}" value of type "System.String" to type "System.Collections.Hashtable".
What I tried: passing with and without @
, changing the delimiter to ;;
(I need use this in PowerApps too) and ,
, none of them helped. Please advise, what is the correct way of passing this object to the script.
azure-powershell azure-automation
add a comment |
I think, I read all related posts, still cannot make this work.
I have an Azure Runbook that needs a HashTable parameter passed to a provisioning script. This is used later by the Apply-PnPTemplate
function.
Parameters declared in the script as
[System.Collections.Hashtable] $Parameters = @{}
but I also tried
[Object] $Parameters = @{}
I try to test my script, add @{"customercode"="TEST"}
as parameter, but I get this error message:
Cannot convert the "@{"customercode"="TEST"}" value of type "System.String" to type "System.Collections.Hashtable".
What I tried: passing with and without @
, changing the delimiter to ;;
(I need use this in PowerApps too) and ,
, none of them helped. Please advise, what is the correct way of passing this object to the script.
azure-powershell azure-automation
I think, I read all related posts, still cannot make this work.
I have an Azure Runbook that needs a HashTable parameter passed to a provisioning script. This is used later by the Apply-PnPTemplate
function.
Parameters declared in the script as
[System.Collections.Hashtable] $Parameters = @{}
but I also tried
[Object] $Parameters = @{}
I try to test my script, add @{"customercode"="TEST"}
as parameter, but I get this error message:
Cannot convert the "@{"customercode"="TEST"}" value of type "System.String" to type "System.Collections.Hashtable".
What I tried: passing with and without @
, changing the delimiter to ;;
(I need use this in PowerApps too) and ,
, none of them helped. Please advise, what is the correct way of passing this object to the script.
azure-powershell azure-automation
azure-powershell azure-automation
asked Nov 27 '18 at 11:59
vilmarcivilmarci
184212
184212
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
I have experienced the same issue, seams that it always treats the input as string.
I cannot figure out the reason, but here is a workaround: pass a fake hashtable(string type), then in the runbook, convert the string to hashtable.
Demo code as below, hope it helps.
param([string]$mystr)
$mystr = $mystr.replace("=",":")
# pass the string to hashtable
$Parameters = @{}
$jsonobj = $mystr | ConvertFrom-Json
foreach($p in $jsonobj.psobject.properties){$Parameters[$p.name] = $p.value}
#print the keys
write-output "**the keys**"
$Parameters.keys
write-output "**the values**"
#print the values
$Parameters.values
The parameters I passed: {"name"="jack","age"="11","city"="ddd"}
The test result:
Thanks, this workaround indeed works.
– vilmarci
Dec 3 '18 at 14:24
add a comment |
Try this;
[System.Collections.Hashtable] $Parameters = @{}
$Parameters.add("customercode","TEST")
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53499205%2fpassing-hashtable-to-powershell-runbook%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
I have experienced the same issue, seams that it always treats the input as string.
I cannot figure out the reason, but here is a workaround: pass a fake hashtable(string type), then in the runbook, convert the string to hashtable.
Demo code as below, hope it helps.
param([string]$mystr)
$mystr = $mystr.replace("=",":")
# pass the string to hashtable
$Parameters = @{}
$jsonobj = $mystr | ConvertFrom-Json
foreach($p in $jsonobj.psobject.properties){$Parameters[$p.name] = $p.value}
#print the keys
write-output "**the keys**"
$Parameters.keys
write-output "**the values**"
#print the values
$Parameters.values
The parameters I passed: {"name"="jack","age"="11","city"="ddd"}
The test result:
Thanks, this workaround indeed works.
– vilmarci
Dec 3 '18 at 14:24
add a comment |
I have experienced the same issue, seams that it always treats the input as string.
I cannot figure out the reason, but here is a workaround: pass a fake hashtable(string type), then in the runbook, convert the string to hashtable.
Demo code as below, hope it helps.
param([string]$mystr)
$mystr = $mystr.replace("=",":")
# pass the string to hashtable
$Parameters = @{}
$jsonobj = $mystr | ConvertFrom-Json
foreach($p in $jsonobj.psobject.properties){$Parameters[$p.name] = $p.value}
#print the keys
write-output "**the keys**"
$Parameters.keys
write-output "**the values**"
#print the values
$Parameters.values
The parameters I passed: {"name"="jack","age"="11","city"="ddd"}
The test result:
Thanks, this workaround indeed works.
– vilmarci
Dec 3 '18 at 14:24
add a comment |
I have experienced the same issue, seams that it always treats the input as string.
I cannot figure out the reason, but here is a workaround: pass a fake hashtable(string type), then in the runbook, convert the string to hashtable.
Demo code as below, hope it helps.
param([string]$mystr)
$mystr = $mystr.replace("=",":")
# pass the string to hashtable
$Parameters = @{}
$jsonobj = $mystr | ConvertFrom-Json
foreach($p in $jsonobj.psobject.properties){$Parameters[$p.name] = $p.value}
#print the keys
write-output "**the keys**"
$Parameters.keys
write-output "**the values**"
#print the values
$Parameters.values
The parameters I passed: {"name"="jack","age"="11","city"="ddd"}
The test result:
I have experienced the same issue, seams that it always treats the input as string.
I cannot figure out the reason, but here is a workaround: pass a fake hashtable(string type), then in the runbook, convert the string to hashtable.
Demo code as below, hope it helps.
param([string]$mystr)
$mystr = $mystr.replace("=",":")
# pass the string to hashtable
$Parameters = @{}
$jsonobj = $mystr | ConvertFrom-Json
foreach($p in $jsonobj.psobject.properties){$Parameters[$p.name] = $p.value}
#print the keys
write-output "**the keys**"
$Parameters.keys
write-output "**the values**"
#print the values
$Parameters.values
The parameters I passed: {"name"="jack","age"="11","city"="ddd"}
The test result:
answered Nov 30 '18 at 5:32
Ivan YangIvan Yang
3,374127
3,374127
Thanks, this workaround indeed works.
– vilmarci
Dec 3 '18 at 14:24
add a comment |
Thanks, this workaround indeed works.
– vilmarci
Dec 3 '18 at 14:24
Thanks, this workaround indeed works.
– vilmarci
Dec 3 '18 at 14:24
Thanks, this workaround indeed works.
– vilmarci
Dec 3 '18 at 14:24
add a comment |
Try this;
[System.Collections.Hashtable] $Parameters = @{}
$Parameters.add("customercode","TEST")
add a comment |
Try this;
[System.Collections.Hashtable] $Parameters = @{}
$Parameters.add("customercode","TEST")
add a comment |
Try this;
[System.Collections.Hashtable] $Parameters = @{}
$Parameters.add("customercode","TEST")
Try this;
[System.Collections.Hashtable] $Parameters = @{}
$Parameters.add("customercode","TEST")
answered Nov 29 '18 at 17:29
HannelHannel
60339
60339
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53499205%2fpassing-hashtable-to-powershell-runbook%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown