我正在尝试从base64解码电子邮件文件中的附件并将其保存到磁盘.
出于测试目的,这是我的代码.其中input.txt只包含base64编码数据,这是一个HTML文件.
$file = "C:\input.txt"
$data = Get-Content $file
[System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String($data)) > out.html
Run Code Online (Sandbox Code Playgroud)
解码工作正常,它生成一个包含所有行的新文件,并且与原始附件明显相同.问题是输出文件的大小是两倍(实际上(filesize*2)+6字节,在这种情况下).
我不正确地解码了吗?我也试过UTF8而不是ASCII ...同样的结果.
我对 Bash 比对 Powershell 更熟悉,有时我对后者的对象模型感到困惑。
查看Get-FileHash的文档,似乎有 3 种指定输入的方法:
前两个取文件名,第三个取数据流。
现在,Get-ChildItem -File
似乎输出System.IO.FileInfo
对象,从什么Get-Member
说:
$ Get-ChildItem -File | Get-Member
TypeName: System.IO.FileInfo
Run Code Online (Sandbox Code Playgroud)
然而管道Get-ChildItem -File | Get-FileHash
工作正常。我的问题是,允许转换System.IO.FileInfo
为预期的输入类型的机制是什么Get-FileHash
?
两者均见下方$a
,$s
是包含文本的字符串,"String"
但每个字符串的转换方式与ConvertTo-JSON不同。
为什么不$s | ConvertToJson
生产"String"
??
PS W:\PowerShell\powowshell> $a="String"
PS W:\PowerShell\powowshell> $a
String
PS W:\PowerShell\powowshell> $a.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
PS W:\PowerShell\powowshell> $a | ConvertTo-Json
"String"
PS W:\PowerShell\powowshell> $s
String
PS W:\PowerShell\powowshell> $s.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
PS W:\PowerShell\powowshell> $s | ConvertTo-Json
{
"value": "String",
"required": "true"
}
Run Code Online (Sandbox Code Playgroud)
$s
在parameterValue
一个.ps1
检查用Get-Help …
Get-ADuser
cmdlet的示例:
$Users = Get-ADuser -Filter *
Run Code Online (Sandbox Code Playgroud)
在大多数情况下它会返回多个 ADuser 对象,但它是什么“集合”类型?文档只说它会返回一个或多个 Microsoft.ActiveDirectory.Management.ADUser 的用户对象。
尝试使用例如,($Users -is [System.Collections.ArrayList])
但我无法确定“集合”类型?