如何通过 C# 在 powershell 中传递一个应该为 $null 的参数
How do I pass a parameter that should be $null in powershell via C#
Exchange 管理要求您将 $null 作为参数传递以从邮箱中删除转发:
设置邮箱-ForwardingAddress $null -DeliverToMailboxAndForward $false
这个(恕我直言)翻译成:
command = new PSCommand().AddCommand("Set-Mailbox");
command.AddParameter("Identity",task.TargetUser);
command.AddParameter("FowardingAddress", null);
command.AddParameter("DeliverToMailboxAndForward", false);
ps.Commands=command;
var results = ps.Invoke();
不幸的是,Invoke 在 "ForwardingAddress" 设置上阻塞:找不到与参数名称 'FowardingAddress'.
匹配的参数
如何传递以 $null 结尾的参数?
如果该参数是字符串类型,那么您应该能够传递这个值:
System.Management.Automation.Language.NullString.Value
或包括
using System.Management.Automation.Language;
之后
command.AddParameter("ForwardingAddress",NullString.Value);
另一种选择是通过 AddScript
方法使用 $null
:
var script = String.Format("Set-Mailbox -Identity {0} -ForwardingAddress $null -DeliverToMailboxAndForward $false", task.TargetUser);
new PSCommand().AddScript(script);
通过 null
应该没问题。如 this question 所示,C# 的空值映射到 $null.
假设您显示的代码是直接从您的解决方案复制粘贴的,我猜问题是您将值传递给参数 "FowardingAddress",而不是 "ForwardingAddress"(注意缺少的 'r')。一个简单的错字,而不是类型不匹配。 :)
Exchange 管理要求您将 $null 作为参数传递以从邮箱中删除转发:
设置邮箱-ForwardingAddress $null -DeliverToMailboxAndForward $false
这个(恕我直言)翻译成:
command = new PSCommand().AddCommand("Set-Mailbox");
command.AddParameter("Identity",task.TargetUser);
command.AddParameter("FowardingAddress", null);
command.AddParameter("DeliverToMailboxAndForward", false);
ps.Commands=command;
var results = ps.Invoke();
不幸的是,Invoke 在 "ForwardingAddress" 设置上阻塞:找不到与参数名称 'FowardingAddress'.
匹配的参数如何传递以 $null 结尾的参数?
如果该参数是字符串类型,那么您应该能够传递这个值:
System.Management.Automation.Language.NullString.Value
或包括
using System.Management.Automation.Language;
之后
command.AddParameter("ForwardingAddress",NullString.Value);
另一种选择是通过 AddScript
方法使用 $null
:
var script = String.Format("Set-Mailbox -Identity {0} -ForwardingAddress $null -DeliverToMailboxAndForward $false", task.TargetUser);
new PSCommand().AddScript(script);
通过 null
应该没问题。如 this question 所示,C# 的空值映射到 $null.
假设您显示的代码是直接从您的解决方案复制粘贴的,我猜问题是您将值传递给参数 "FowardingAddress",而不是 "ForwardingAddress"(注意缺少的 'r')。一个简单的错字,而不是类型不匹配。 :)