我有一个PowerShell cmdlet(move-IMAPMailboxToExchange),需要大量的重复input。 我想用另一个批处理/ powershell脚本,只需要从命令行两个参数。 我已经尝试了所有我能想到的调用约定,但是我无法使其工作。
我要这个:
Move-IMAPMailboxToExchange -SourcePassword P@ssW0rd! -allowunsecureconnection -sourceLoginId username -sourceserver source.ser.ver -sourceidentity [email protected] targetclientaccessserver "client.access.ser.ver" -targetidentity [email protected] -verbose
为了这个:
migrate-user username P@ssW0rd!
我试过$ args,但似乎扩大。 我已经尝试了$ args [0],它在裸字密码和sourcelogin中工作,但不能在@mail旁边工作….我尝试了%1等,从旧DOS天,但是,工作。
我是一个unix dork,而且我还没有完全熟悉powershell。
我记得,单引号是PowerShell如何指定“不parsing”的东西。 所以…
你可能想要做这样的事情
$username=$args[0] $passwd=$args[1] Move-IMAPMailboxToExchange [all that jazz]
作为在脚本的上下文中坚定地声明variables的一种方式。 如果在构build-sourceidentity和-targetidentityvariables时遇到困难,可能需要在将它们放到move-imaptoexchange命令之前预先构build它们。
$sourceident="$username"+'@srcmail.dom.ain' $targeditent="$username"+'@tgtmail.dom.ain'
您应该可以在cmdlet周围定义一个函数或脚本文件,如下所示:
function migrate-user { param($username,$password) Move-IMAPMailboxToExchange -SourcePassword $password -allowunsecureconnection -sourceLoginId $username -sourceserver 'source.ser.ver' -sourceidentity "$username`@mail.dom.ain" targetclientaccessserver 'client.access.ser.ver' -targetidentity "$username`@mail.dom.ain" -verbose }