Crescendo
Crescendo copied to clipboard
Add a way to specify a value for $PSNativeCommandArgumentPassing
Summary of the new feature / enhancement
Take for example the Windows native command vaultcmd.exe. That command has parameters that take values that require quotes. When $PSNativeCommandArgumentPassing = 'Windows' (which is the default) the command fails. When set to Legacy it works.
Example
vaultcmd /listcreds:"windows credentials"
Output
Credentials in vault: windows credentials
Credential schema: Windows Domain Password Credential
Resource: Domain:target=mydomain
Identity: COMPUTER\admin
Hidden: No
Roaming: No
Property (schema element id,value): (100,3)
Property (schema element id,value): (101,SspiPfc)
Credential schema: Windows Domain Password Credential
Resource: Domain:target=myotherpc
Identity: [email protected]
Hidden: No
Roaming: No
Property (schema element id,value): (100,3)
Property (schema element id,value): (101,SspiPfc)
$cmd = 'vaultcmd'
$arg = '/listcreds:"windows credentials"'
& $cmd $arg
Output
Invalid vault: Element not found.
When you switch to Legacy mode, the command invocation works.
$PSNativeCommandArgumentPassing = 'Legacy'
& $cmd $arg
Output
Credentials in vault: windows credentials
Credential schema: Windows Domain Password Credential
Resource: Domain:target=mydomain
Identity: COMPUTER\admin
Hidden: No
Roaming: No
Property (schema element id,value): (100,3)
Property (schema element id,value): (101,SspiPfc)
Credential schema: Windows Domain Password Credential
Resource: Domain:target=myotherpc
Identity: [email protected]
Hidden: No
Roaming: No
Property (schema element id,value): (100,3)
Property (schema element id,value): (101,SspiPfc)
Proposed technical implementation details (optional)
Add a property that allows you to set the value of $PSNativeCommandArgumentPassing.
Add the assignment to the begin block of the cmdlet function generated.