gpt4 book ai didi

powershell - 将多字符串参数添加到哈希表以进行 Splatting

转载 作者:行者123 更新时间:2023-12-03 13:14:31 25 4
gpt4 key购买 nike

我大部分时间都在用这个。我试图在 splatting 之前向我的哈希表添加一个参数。但是,我尝试添加的参数是两个字符串的集合。

$myHT = @{
From = 'me@x.com'
To = 'them@x.com'
SmtpServer = 'mail.x.com'
}

$myHT.Add("Attachments","$PSScriptRoot\x.pdf", "$PSScriptRoot\y.pdf")

Send-MailMessage @myHT

当然,powershell 会将其视为三个独立的参数,并相应地出错。所以为了纠正这个问题,我一直在尝试类似的事情:

$myHT.Add("Attachments","`"$PSScriptRoot\x.pdf`", `"$PSScriptRoot\y.pdf`"")

Cannot find drive. A drive with the name '"C' does not exist.

$myHT.Add("Attachments","$PSScriptRoot\x.pdf, $PSScriptRoot\y.pdf")

The given path's format is not supported.

我觉得我在这里犯了一个语法错误,但找不到任何关于正确方法的文档。

是否有人可以分享他们在这个问题上的经验?

最佳答案

.Add() 方法只接受 2 个参数,无论您作为第二个参数传递什么,都将按原样分配。

在您的情况下,您想要分配一个数组,因此您必须将该数组作为单个第二个参数传递:

$myHT.Add("Attachments", ("$PSScriptRoot\x.pdf", "$PSScriptRoot\y.pdf"))

注意 PS 数组 "$PSScriptRoot\x.pdf", "$PSScriptRoot\y.pdf" 周围的 (...) 以确保它被识别因此。

虽然使用 @(...) 也是一种选择,但通常是不必要的(并在幕后执行不必要的工作)。


或者,使用基于键的哈希表访问来添加元素可能会使分配更具可读性:

$myHT.Attachments = "$PSScriptRoot\x.pdf", "$PSScriptRoot\y.pdf"

# Equivalent
$myHT['Attachments'] = "$PSScriptRoot\x.pdf", "$PSScriptRoot\y.pdf"

关于powershell - 将多字符串参数添加到哈希表以进行 Splatting,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43635438/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com