Active IQ Unified Manager Discussions

Connect to WFA vi web services using machine domain account?


All, I am creating a script that will invoke a WF via web services (so it can be scheduled).  However, the user does not want to store the credentials within the script file. What are my options? Should I import the wfa module and get wfa credentials, or is there a better way?




       You can't import the WFA module outside of WFA commands and call the Get-WfaCredentials to get credentials. This won't work.

I suggest you use the REST api ApiExecutionResource to get the credentials. The following code works fine ( crudely written, but commented every step )


#wfa Credentials. Modify it as your settings. My WFA HTTP port is 90.

$user = "admin"

$pass = "admin"

#Create Credential object for WFA login

$secpasswd = ConvertTo-SecureString $pass -AsPlainText -Force

$cred = New-Object System.Management.Automation.PSCredential ($user, $secpasswd)

#API to get the genericSession element. This ONLY works with localhost

$add = "http://localhost:90/rest/execution/api/create"

#Invoke REST API

$wf=Invoke-RestMethod -Uri $add -Method Post -Credential $cred -ContentType "application/xml" -Headers @{"Authorization"="Basic YWRtaW46YWRtaW4="}

#Obtain the UUID from generi session element.

$uuid= $wf.genericSession.uuid

#The Cluster/Array or any host whose Credentials you require. You need to have the credentials already saved in WFA

$host_name = ""

#API to get the Username/Password in plain text

$add2 = "http://localhost:90/rest/execution/api/$uuid/credentials?hostId=$host_name"

#Invoke REST API

$wf2=Invoke-RestMethod -Uri $add2 -Method Get -Credential $cred -ContentType "application/xml" -Headers @{"Authorization"="Basic YWRtaW46YWRtaW4="}

# Get Username/Password form the returned XML object

$userName = $wf2.userCredentials.userName

$PlainPassword = $wf2.userCredentials.password

#Create Secure String for the Password

$secPassword = ConvertTo-SecureString $PlainPassword -AsPlainText -Force

#Build credential object

$Creds = New-Object System.Management.Automation.PSCredential ($userName, $secPassword)

#This Credentail $Creds can be used in the remaining code.


If this post resolved your issue, help others by selecting ACCEPT AS SOLUTION or adding a KUDO.
NetApp on Discord Image

We're on Discord, are you?

Live Chat, Watch Parties, and More!

Explore Banner

Meet Explore, NetApp’s digital sales platform

Engage digitally throughout the sales process, from product discovery to configuration, and handle all your post-purchase needs.

NetApp Insights to Action
I2A Banner