Protect-Data Cmdlet

Parameters   Output Objects   Config Settings  

The Protect-Data cmdlet supports encrypting data with various symmetric algorithms including AES, 3DES, and more.

Syntax

Protect-Data [parameters]

Remarks

The Protect-Data cmdlet provides a simple way to encrypt data or files. The following encryption algorithms are supported:

  • AES (default)
  • Blowfish
  • CAST
  • DES
  • IDEA
  • RC2
  • RC4
  • TEA
  • TripleDES
  • Twofish
  • Rijndael

To begin, specify the input data through either InputMessage or InputFile. If OutputFile is set the encrypted data will be written to the specified file, otherwise it will be returned in the OutputMessage object.

Next, set KeyPassword, and specify the Algorithm if desired. Additional parameters that affect the encryption algorithm include CipherMode and PaddingMode.

If the output will be stored as a string set UseHex to hex encode the output before encrypting. This makes storage and transmission of the data easier.

Additional options include specifying Key and InitializationVector instead of KeyPassword, encrypting block-by-block via InputBlockB, specifying KeySize, KeyPasswordAlgorithm, and more.

Encrypt Examples #Encrypt a string with AES and default options $encryptedData = Protect-Data -InputMessage test -KeyPassword password #Encrypt a string to file with 3DES Protect-Data -InputMessage test -KeyPassword password -OutputFile C:\encrypted.dat -Algorithm tripledes #Encrypt a file to string and hex encode it Protect-Data -InputFile C:\test.txt -KeyPassword password -UseHex

Decrypt Examples #Decrypt a string with AES Unprotect-Data -InputMessageB $encryptedData.DataB -KeyPassword password #Decrypt a file to string with 3DES Unprotect-Data -InputFile C:\encrypted.dat -KeyPassword password -Algorithm tripledes #Decrypt a string to file and hex decode it Unprotect-Data -InputMessage ADE51B29E36B2C1FCB4C9A1BEB8884AE -KeyPassword password -UseHex -OutputFile C:\test.decrypted.txt

Parameter List


The following is the full list of the parameters of the cmdlet with short descriptions. Click on the links for further details.

LogFileThe location of a file to which debug information is written.
AlgorithmThe encryption algorithm.
CharsetThe character set of the data.
CipherModeThe cipher mode of operation.
ConfigSpecifies one or more configuration settings.
InitializationVectorThe initialization vector (IV).
InputBlockBA block of data to encrypt.
InputFileThe file to process.
InputMessageThe message to process.
InputMessageBThe message to process.
IVBThe initialization vector (IV).
KeyThe secret key for the symmetric algorithm.
KeyBThe secret key for the symmetric algorithm.
KeyPasswordA password to generate the Key and InitializationVector .
LastBlockWhether the input block is the last block.
LogFileThe location of a file to which debug information is written.
OutputFileSpecifies the output file.
OverwriteWhether to overwrite the output file.
PaddingModeThe padding mode.
UseHexWhether input or output is hex encoded.

Output Objects


The following is the full list of the output objects returned by the cmdlet with short descriptions. Click on the links for further details.

OutputBlockThe encrypted block.
OutputMessageThe output message.

Config Settings


The following is a list of config settings for the cmdlet with short descriptions. Click on the links for further details.

BlockSizeThe block size, in bits, of the cryptographic operation.
IncludeIVWhether to prepend the IV to the output data and read the IV from the input data.
KeyPasswordAlgorithmThe hash algorithm used to derive the Key and IV from the KeyPassword property.
KeyPasswordSaltThe salt value used in conjunction with the KeyPassword to derive the Key and IV.
KeySizeThe size, in bits, of secret key for the symmetric algorithm.
BuildInfoInformation about the product's build.
CodePageThe system code page used for Unicode to Multibyte translations.
LicenseInfoInformation about the current license.
MaskSensitiveWhether sensitive data is masked in log messages.
UseInternalSecurityAPITells the component whether or not to use the system security libraries or an internal implementation.

LogFile Parameter (Protect-Data Cmdlet)

The location of a file to which debug information is written.

Syntax

Protect-Data -LogFile string

Remarks

When specified, the cmdlet will log debug information to the file. If the file exists, the information will be appended.

Default Value

null

Algorithm Property (Protect-Data Cmdlet)

The encryption algorithm.

Syntax

Protect-Data -Algorithm string

Remarks

This parameter specifies the encryption algorithm. Possible values are:

  • AES (default)
  • Blowfish
  • CAST
  • DES
  • IDEA
  • RC2
  • RC4
  • TEA
  • TripleDES
  • Twofish
  • Rijndael

Default Value

0

Charset Property (Protect-Data Cmdlet)

The character set of the data.

Syntax

Protect-Data -Charset string

Remarks

Allows you to specify the character set of the data. By default, the parameter is an empty string ("") and will use the platform's current character set.

Default Value

""

CipherMode Property (Protect-Data Cmdlet)

The cipher mode of operation.

Syntax

Protect-Data -CipherMode string

Remarks

The cipher mode of operation. Possible values are:

CBC (default) The Cipher Block Chaining (CBC) is a mode of operation for a block cipher, one in which a sequence of bits is encrypted as a single unit or block with a cipher key applied to the entire block.
ECBThe Electronic Codebook (ECB) mode encrypts each block separately. Important: It is not recommend to use this model when encrypting more than one block because it may introduce security risks.
OFBThe Output Feedback (n-bit, NOFB) mode makes a block cipher into a synchronous stream cipher. It has some similarities to CFB mode in that it permits encryption of differing block sizes, but has the key difference that the output of the encryption block function is the feedback (instead of the ciphertext).
CFBThe Cipher Feedback (CFB) mode processes a small amount of incremental text into ciphertext, rather than processing a whole block at one time.
CTSThe Cipher Text Stealing (CTS) mode handles any length of plain text and produces cipher text whose length matches the plain text length. This mode behaves like the CBC mode for all but the last two blocks of the plain text.
8OFB8-bit Output Feedback (OFB) cipher mode.

Default Value

0

Config Property (Protect-Data Cmdlet)

Specifies one or more configuration settings.

Syntax

Protect-Data -Config string[]

Remarks

The Config parameter takes one or more name-value pairs that represent the name of the configuration setting and value, i.e.: -config "Name=Value"

Default Value

null

InitializationVector Property (Protect-Data Cmdlet)

The initialization vector (IV).

Syntax

Protect-Data -InitializationVector string

Remarks

This parameter specifies the initialization vector (IV). By default this parameter is empty and the cmdlet will automatically generate a new IV value if KeyPassword is set. The size of the IV parameter must be equal to the BlockSize divided by 8.

Default Value

""

InputBlockB Property (Protect-Data Cmdlet)

A block of data to encrypt.

Syntax

Protect-Data -InputBlockB byte[]

Remarks

This setting specifies a block of unencrypted data to encrypt. This may be used as an alternative to InputMessage or InputFile and allows encrypting block by block. This parameter accepts a byte array. The encrypted block is provided in the OutputBlock object.

Input and Output Parameters

The cmdlet will determine the source and destination of the input and output based on which parameters are set.

The order in which the input parameters are checked is as follows:

When a valid source is found the search stops. The output is written to OutputFile is specified, otherwise it is returned in the OutputMessage object.

Default Value

null

InputFile Property (Protect-Data Cmdlet)

The file to process.

Syntax

Protect-Data -InputFile string

Remarks

This parameter specifies the file to be processed. Set this parameter to the full or relative path to the file which will be processed.

Input and Output Parameters

The cmdlet will determine the source and destination of the input and output based on which parameters are set.

The order in which the input parameters are checked is as follows:

When a valid source is found the search stops. The output is written to OutputFile is specified, otherwise it is returned in the OutputMessage object.

Default Value

""

InputMessage Property (Protect-Data Cmdlet)

The message to process.

Syntax

Protect-Data -InputMessage string

Remarks

This parameter specifies the message to be processed.

Input and Output Parameters

The cmdlet will determine the source and destination of the input and output based on which parameters are set.

The order in which the input parameters are checked is as follows:

When a valid source is found the search stops. The output is written to OutputFile is specified, otherwise it is returned in the OutputMessage object.

Default Value

""

InputMessageB Property (Protect-Data Cmdlet)

The message to process.

Syntax

Protect-Data -InputMessageB byte[]

Remarks

This parameter specifies the message to be processed. This parameter accepts a byte array.

Input and Output Parameters

The cmdlet will determine the source and destination of the input and output based on which parameters are set.

The order in which the input parameters are checked is as follows:

When a valid source is found the search stops. The output is written to OutputFile is specified, otherwise it is returned in the OutputMessage object.

Default Value

null

IVB Property (Protect-Data Cmdlet)

The initialization vector (IV).

Syntax

Protect-Data -IVB byte[]

Remarks

This parameter specifies the initialization vector (IV). By default this parameter is empty and the cmdlet will automatically generate a new IV value if KeyPassword is set. The size of the IV parameter must be equal to the BlockSize divided by 8. This parameter accept a byte array.

Default Value

null

Key Property (Protect-Data Cmdlet)

The secret key for the symmetric algorithm.

Syntax

Protect-Data -Key string

Remarks

This secret key is used both for encryption and decryption. The secret key should be known only to the sender and the receiver. The legal key size varies depending on the algorithm.

If this parameter is left empty and KeyPassword is specified, a Key value will be generated by the cmdlet as necessary.

Legal Key and Block Sizes (in bits)

AES Rijndael CAST DES IDEA RC2 RC4 TripleDES Blowfish Twofish TEA
Minimum Key Size 128 128 112 64 128 112 112 128 112 128 128
Maximum Key Size 256 256 128 64 128 128 2048 192 448 256 128
Key Size Step 64 64 8 0 0 8 8 64 1 8 0
Block Size 128 128/192/256 64 64 64 64 N/A 64 64 128 64*

Note: When using TEA if Algorithm is set to XXTEA valid block sizes are 64 + n * 32. Where n is any positive integer.

The default KeySize is the Maximum Key Size.

Default Value

""

KeyB Property (Protect-Data Cmdlet)

The secret key for the symmetric algorithm.

Syntax

Protect-Data -KeyB byte[]

Remarks

This secret key is used both for encryption and decryption. The secret key should be known only to the sender and the receiver. The legal key size varies depending on the algorithm.

If this parameter is left empty and KeyPassword is specified, a Key value will be generated by the cmdlet as necessary.

Legal Key and Block Sizes (in bits)

AES Rijndael CAST DES IDEA RC2 RC4 TripleDES Blowfish Twofish TEA
Minimum Key Size 128 128 112 64 128 112 112 128 112 128 128
Maximum Key Size 256 256 128 64 128 128 2048 192 448 256 128
Key Size Step 64 64 8 0 0 8 8 64 1 8 0
Block Size 128 128/192/256 64 64 64 64 N/A 64 64 128 64*

Note: When using TEA if Algorithm is set to XXTEA valid block sizes are 64 + n * 32. Where n is any positive integer.

The default KeySize is the Maximum Key Size. This parameter accept a byte array.

Default Value

null

KeyPassword Property (Protect-Data Cmdlet)

A password to generate the Key and InitializationVector .

Syntax

Protect-Data -KeyPassword string

Remarks

When this parameter is set the cmdlet will calculate values for Key and InitializationVector using the PKCS5 password digest algorithm. This provides a simpler alternative to creating and managing Key and InitializationVector values directly.

The size of the Key generated is dependent on the value of KeySize.

Default Value

""

LastBlock Property (Protect-Data Cmdlet)

Whether the input block is the last block.

Syntax

Protect-Data -LastBlock SwitchParameter

Remarks

This parameter is used in conjunction with InputBlockB to specify whether the current block is the last block.

Default Value

false

LogFile Property (Protect-Data Cmdlet)

The location of a file to which debug information is written.

Syntax

Protect-Data -LogFile string

Remarks

When specified, the cmdlet will log debug information to the file. If the file exists, the information will be appended.

Default Value

""

OutputFile Property (Protect-Data Cmdlet)

Specifies the output file.

Syntax

Protect-Data -OutputFile string

Remarks

This parameter specifies the output file where data will be written. If this is not specified the data is returned as a OutputMessage object.

Default Value

""

Overwrite Property (Protect-Data Cmdlet)

Whether to overwrite the output file.

Syntax

Protect-Data -Overwrite SwitchParameter

Remarks

This parameter indicates whether the cmdlet will overwrite the output file. If Overwrite is False (default), an error will be thrown when OutputFile exists. The default value is False.

Default Value

false

PaddingMode Property (Protect-Data Cmdlet)

The padding mode.

Syntax

Protect-Data -PaddingMode string

Remarks

PaddingMode is used to pad the final input block to guarantee that it is the correct size required for the selected CipherMode. Each mode pads the data differently. Possible values are:

PKCS7 (default) The data is padded with a series of bytes that are each equal to the number of bytes used. For instance, in the example below the data must be padded with 3 additional bytes, so each byte value will be 3.

Raw Data: AA AA AA AA AA PKCS7 Padded Data: AA AA AA AA AA 03 03 03
Zeros The data is padded with null bytes.
None No padding will be performed.
ANSIX923 The ANSIX923 padding string consists of a sequence of bytes filled with zeros before the length. For instance, in the example below the data must be padded with 3 additional bytes, so last byte value will be 3.

Raw Data: AA AA AA AA AA ANSIX923 padding Data: AA AA AA AA AA 00 00 03
ISO10126 The ISO10126 padding string consists of random data before the length. For instance, in the example below the data must be padded with 3 additional bytes, so last byte value will be 3.

Raw Data: AA AA AA AA AA ISO10126 padding Data: AA AA AA AA AA F8 EF 03

When calling Decrypt the PaddingMode must match the value used when the data was encrypted.

Note: When using a value of 2 (pmNone), unless the length of input is an exact multiple of the cipher's input BlockSize, the final block of plaintext may be lost.

Default Value

0

UseHex Property (Protect-Data Cmdlet)

Whether input or output is hex encoded.

Syntax

Protect-Data -UseHex SwitchParameter

Remarks

This parameter specifies whether data is hex encoded.

When encrypting if this is True the output is hex encoded. When decrypting if this is True the input is first hex decoded before processing.

Default Value

false

OutputBlock Output Object (Protect-Data Cmdlet)

The encrypted block.

Syntax

Object OutputBlock {
   string Data;
   byte[] DataB;
}

Remarks

This object is returned when InputBlockB is set. This holds the encrypted block. The Data property holds the string representation of the block. The DataB property holds the block as a byte array.

OutputMessage Output Object (Protect-Data Cmdlet)

The output message.

Syntax

Object OutputMessage {
   string Data;
   byte[] DataB;
}

Remarks

This holds the output data. The Data property holds the string representation. The DataB property holds the block as a byte array.

Config Settings (Protect-Data Cmdlet)

The cmdlet accepts one or more of the following configuration settings. Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the cmdlet, access to these internal properties is provided through the Config method.

Protect-Data Config Settings

BlockSize:   The block size, in bits, of the cryptographic operation.

The block size is a basic data unit in the operation of encrypt or decrypt. Messages longer than the block size are seen as successive blocks. If the message is shorter than the block size, the message will be padded with extra bits to reach the block size according to PaddingMode. Different symmetric algorithm has different valid block sizes.

The following algorithms have a fixed block size: AES, CAST, DES, IDEA, RC2, TripleDES, Blowfish, and Twofish.

IncludeIV:   Whether to prepend the IV to the output data and read the IV from the input data.

If this config is true, the IV will be automatically prepended to the output data when calling Encrypt. When calling Decrypt and this setting is True, the IV is automatically extracted form the ciphertext. The default value is False.

KeyPasswordAlgorithm:   The hash algorithm used to derive the Key and IV from the KeyPassword property.

This configuration setting specifies which hash algorithm will be used when deriving the Key and InitializationVector from KeyPassword. The default value is "MD5". Possible values are:

  • "SHA1"
  • "MD2"
  • "MD5" (default)
  • "HMAC-SHA1"
  • "HMAC-SHA224"
  • "HMAC-SHA256"
  • "HMAC-SHA384"
  • "HMAC-SHA512"
  • "HMAC-MD5"
  • "HMAC-RIPEMD160"
KeyPasswordSalt:   The salt value used in conjunction with the KeyPassword to derive the Key and IV.

This configuration setting specifies the hex encoded salt value to be used along with the KeyPassword when calculating values for Key and InitializationVector.

KeySize:   The size, in bits, of secret key for the symmetric algorithm.

The legal key sizes vary depending on the algorithm. The KeySize and BlockSize configuration settings may be set to specify the key and block size (in bits).

This setting is only applicable when KeyPassword is specified.

Note that when using the EzCrypt cmdlet, KeySize should be set after setting the Algorithm property.

Base Config Settings

BuildInfo:   Information about the product's build.

When queried, this setting will return a string containing information about the product's build.

CodePage:   The system code page used for Unicode to Multibyte translations.

The default code page is Unicode UTF-8 (65001).

The following is a list of valid code page identifiers:

IdentifierName
037IBM EBCDIC - U.S./Canada
437OEM - United States
500IBM EBCDIC - International
708Arabic - ASMO 708
709Arabic - ASMO 449+, BCON V4
710Arabic - Transparent Arabic
720Arabic - Transparent ASMO
737OEM - Greek (formerly 437G)
775OEM - Baltic
850OEM - Multilingual Latin I
852OEM - Latin II
855OEM - Cyrillic (primarily Russian)
857OEM - Turkish
858OEM - Multilingual Latin I + Euro symbol
860OEM - Portuguese
861OEM - Icelandic
862OEM - Hebrew
863OEM - Canadian-French
864OEM - Arabic
865OEM - Nordic
866OEM - Russian
869OEM - Modern Greek
870IBM EBCDIC - Multilingual/ROECE (Latin-2)
874ANSI/OEM - Thai (same as 28605, ISO 8859-15)
875IBM EBCDIC - Modern Greek
932ANSI/OEM - Japanese, Shift-JIS
936ANSI/OEM - Simplified Chinese (PRC, Singapore)
949ANSI/OEM - Korean (Unified Hangul Code)
950ANSI/OEM - Traditional Chinese (Taiwan; Hong Kong SAR, PRC)
1026IBM EBCDIC - Turkish (Latin-5)
1047IBM EBCDIC - Latin 1/Open System
1140IBM EBCDIC - U.S./Canada (037 + Euro symbol)
1141IBM EBCDIC - Germany (20273 + Euro symbol)
1142IBM EBCDIC - Denmark/Norway (20277 + Euro symbol)
1143IBM EBCDIC - Finland/Sweden (20278 + Euro symbol)
1144IBM EBCDIC - Italy (20280 + Euro symbol)
1145IBM EBCDIC - Latin America/Spain (20284 + Euro symbol)
1146IBM EBCDIC - United Kingdom (20285 + Euro symbol)
1147IBM EBCDIC - France (20297 + Euro symbol)
1148IBM EBCDIC - International (500 + Euro symbol)
1149IBM EBCDIC - Icelandic (20871 + Euro symbol)
1200Unicode UCS-2 Little-Endian (BMP of ISO 10646)
1201Unicode UCS-2 Big-Endian
1250ANSI - Central European
1251ANSI - Cyrillic
1252ANSI - Latin I
1253ANSI - Greek
1254ANSI - Turkish
1255ANSI - Hebrew
1256ANSI - Arabic
1257ANSI - Baltic
1258ANSI/OEM - Vietnamese
1361Korean (Johab)
10000MAC - Roman
10001MAC - Japanese
10002MAC - Traditional Chinese (Big5)
10003MAC - Korean
10004MAC - Arabic
10005MAC - Hebrew
10006MAC - Greek I
10007MAC - Cyrillic
10008MAC - Simplified Chinese (GB 2312)
10010MAC - Romania
10017MAC - Ukraine
10021MAC - Thai
10029MAC - Latin II
10079MAC - Icelandic
10081MAC - Turkish
10082MAC - Croatia
12000Unicode UCS-4 Little-Endian
12001Unicode UCS-4 Big-Endian
20000CNS - Taiwan
20001TCA - Taiwan
20002Eten - Taiwan
20003IBM5550 - Taiwan
20004TeleText - Taiwan
20005Wang - Taiwan
20105IA5 IRV International Alphabet No. 5 (7-bit)
20106IA5 German (7-bit)
20107IA5 Swedish (7-bit)
20108IA5 Norwegian (7-bit)
20127US-ASCII (7-bit)
20261T.61
20269ISO 6937 Non-Spacing Accent
20273IBM EBCDIC - Germany
20277IBM EBCDIC - Denmark/Norway
20278IBM EBCDIC - Finland/Sweden
20280IBM EBCDIC - Italy
20284IBM EBCDIC - Latin America/Spain
20285IBM EBCDIC - United Kingdom
20290IBM EBCDIC - Japanese Katakana Extended
20297IBM EBCDIC - France
20420IBM EBCDIC - Arabic
20423IBM EBCDIC - Greek
20424IBM EBCDIC - Hebrew
20833IBM EBCDIC - Korean Extended
20838IBM EBCDIC - Thai
20866Russian - KOI8-R
20871IBM EBCDIC - Icelandic
20880IBM EBCDIC - Cyrillic (Russian)
20905IBM EBCDIC - Turkish
20924IBM EBCDIC - Latin-1/Open System (1047 + Euro symbol)
20932JIS X 0208-1990 & 0121-1990
20936Simplified Chinese (GB2312)
21025IBM EBCDIC - Cyrillic (Serbian, Bulgarian)
21027Extended Alpha Lowercase
21866Ukrainian (KOI8-U)
28591ISO 8859-1 Latin I
28592ISO 8859-2 Central Europe
28593ISO 8859-3 Latin 3
28594ISO 8859-4 Baltic
28595ISO 8859-5 Cyrillic
28596ISO 8859-6 Arabic
28597ISO 8859-7 Greek
28598ISO 8859-8 Hebrew
28599ISO 8859-9 Latin 5
28605ISO 8859-15 Latin 9
29001Europa 3
38598ISO 8859-8 Hebrew
50220ISO 2022 Japanese with no halfwidth Katakana
50221ISO 2022 Japanese with halfwidth Katakana
50222ISO 2022 Japanese JIS X 0201-1989
50225ISO 2022 Korean
50227ISO 2022 Simplified Chinese
50229ISO 2022 Traditional Chinese
50930Japanese (Katakana) Extended
50931US/Canada and Japanese
50933Korean Extended and Korean
50935Simplified Chinese Extended and Simplified Chinese
50936Simplified Chinese
50937US/Canada and Traditional Chinese
50939Japanese (Latin) Extended and Japanese
51932EUC - Japanese
51936EUC - Simplified Chinese
51949EUC - Korean
51950EUC - Traditional Chinese
52936HZ-GB2312 Simplified Chinese
54936Windows XP: GB18030 Simplified Chinese (4 Byte)
57002ISCII Devanagari
57003ISCII Bengali
57004ISCII Tamil
57005ISCII Telugu
57006ISCII Assamese
57007ISCII Oriya
57008ISCII Kannada
57009ISCII Malayalam
57010ISCII Gujarati
57011ISCII Punjabi
65000Unicode UTF-7
65001Unicode UTF-8
The following is a list of valid code page identifiers for Mac OS only:
IdentifierName
1ASCII
2NEXTSTEP
3JapaneseEUC
4UTF8
5ISOLatin1
6Symbol
7NonLossyASCII
8ShiftJIS
9ISOLatin2
10Unicode
11WindowsCP1251
12WindowsCP1252
13WindowsCP1253
14WindowsCP1254
15WindowsCP1250
21ISO2022JP
30MacOSRoman
10UTF16String
0x90000100UTF16BigEndian
0x94000100UTF16LittleEndian
0x8c000100UTF32String
0x98000100UTF32BigEndian
0x9c000100UTF32LittleEndian
65536Proprietary

LicenseInfo:   Information about the current license.

When queried, this setting will return a string containing information about the license this instance of a cmdlet is using. It will return the following information:

  • Product: The product the license is for.
  • Product Key: The key the license was generated from.
  • License Source: Where the license was found (e.g., RuntimeLicense, License File).
  • License Type: The type of license installed (e.g., Royalty Free, Single Server).
  • Last Valid Build: The last valid build number for which the license will work.
MaskSensitive:   Whether sensitive data is masked in log messages.

In certain circumstances it may be beneficial to mask sensitive data, like passwords, in log messages. Set this to true to mask sensitive data. The default is true.

This setting only works on these cmdlets: AS3Receiver, AS3Sender, Atom, Client(3DS), FTP, FTPServer, IMAP, OFTPClient, SSHClient, SCP, Server(3DS), Sexec, SFTP, SFTPServer, SSHServer, TCPClient, TCPServer.

UseInternalSecurityAPI:   Whether or not to use the system security libraries or an internal implementation.

When set to false, the cmdlet will use the system security libraries by default to perform cryptographic functions where applicable. In this case, calls to unmanaged code will be made. In certain environments, this is not desirable. To use a completely managed security implementation, set this setting to true.

Setting this configuration setting to true tells the cmdlet to use the internal implementation instead of using the system security libraries.

On Windows, this setting is set to false by default. On Linux/macOS, this setting is set to true by default.

If using the .NET Standard Library, this setting will be true on all platforms. The .NET Standard library does not support using the system security libraries.

Note: This setting is static. The value set is applicable to all cmdlets used in the application.

When this value is set, the product's system dynamic link library (DLL) is no longer required as a reference, as all unmanaged code is stored in that file.