如何使用Python表示Powershell "ToBase64String"函数

How to use Python to represent the Powershell "ToBase64String" function

因为我想调用 windows shell 到 运行 一个命令并从 Python 获取输出,我尝试将命令字符串编码为 Python,然后 运行 使用

> powershell -EncodedCommand <base64 string from Python encode>

它将通过语法错误。
Python 中的代码看起来像

s = '''Get-ADUser -Filter ('Surname -eq "aa" -and GivenName -eq "bb" -and Department -eq "cc"') | Select-Object -Property UserPrincipalName'''
bs = bytearray(s, 'utf-16')
base64.b64encode(bs)

但是,当我使用 Powershell 函数将我的命令字符串加密为 base64 字符串时

PS > $bytes = [System.Text.Encoding]::Unicode.GetBytes("Get-ADUser -Filter ('Surname -eq `"aa`" -and GivenName -eq `"bb`" -and Department -eq `"cc`"') | Select-Object -Property UserPrincipalName")
PS > [Convert]::ToBase64String($bytes)

之后,我可以获得一个有效的 base64 字符串来正常 windows shell 成功执行此命令。

> powershell -EncodedCommand <base64 string encoded by Powershell in last two steps>

我的问题是这里有什么问题? 或者我有其他选择来解决这个问题吗?比如,直接使用“-Command”的PowerShell参数到运行? 实际上,我用

试过了
> powershell -Command "Get-ADUser -Filter ('Surname -eq `"aa`" -and GivenName -eq `"bb`" -and Department -eq `"cc`"') | Select-Object -Property UserPrincipalName"

但是它通过了

的错误
Get-ADUser : Error parsing query: 'Surname -eq `aa` -and GivenName -eq `bb` -and Department -eq `cc`' Error Message: 's
yntax error' at position: '13'.
At line:1 char:1
+ Get-ADUser -Filter ('Surname -eq `aa` -and GivenName -eq `bb` -and De ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ParserError: (:) [Get-ADUser], ADFilterParsingException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADFilterParsingException,Micr
   osoft.ActiveDirectory.Management.Commands.GetADUser

注意 bs = bytearray(s, 'utf-16') 添加 Byte order mark:

bs[0:2]
# bytearray(b'\xff\xfe')

要获得与 PowerShell 相同的结果,请使用

bs = bytearray(s, 'utf-16-le')

然后:

bs[0:20]
# bytearray(b'G\x00e\x00t\x00-\x00A\x00D\x00U\x00s\x00e\x00r\x00')

与 PowerShell 相同:

$bytes[0..19] -join ' '
# 71 0 101 0 116 0 45 0 65 0 68 0 85 0 115 0 101 0 114 0