Simplificando o cmdlet do powershell

2

Eu tenho um cmdlet powershell (move-IMAPMailboxToExchange) que exige muita repetição para entrar. Eu quero chamá-lo com outro script de lote / powershell que leva apenas dois argumentos da linha de comando. Eu tentei todas as convenções de chamada em que posso pensar, mas não consigo fazer isso funcionar.

Eu quero isso:

Move-IMAPMailboxToExchange -SourcePassword P@ssW0rd! -allowunsecureconnection -sourceLoginId username -sourceserver source.ser.ver -sourceidentity [email protected] targetclientaccessserver "client.access.ser.ver" -targetidentity [email protected] -verbose

Para ser isso:

migrate-user username P@ssW0rd!

Eu tentei $ args, mas isso parece se expandir. Eu tentei $ args [0] que funciona na senha do bareword e sourcelogin, mas não funciona ao lado do @mail .... Eu tentei% 1, etc, dos velhos dias do DOS, mas isso não funciona. t trabalho.

Eu sou um idiota unix e ainda não estou muito bem com o powershell.

    
por Jim Zajkowski 03.06.2009 / 20:18

2 respostas

2

Pelo que me lembro, aspas simples são como o PowerShell designa algo como 'não analisar'. então ...

Você pode querer fazer algo assim

$username=$args[0]
$passwd=$args[1]

Move-IMAPMailboxToExchange [all that jazz]

Como forma de declarar firmemente as variáveis dentro do contexto do script. Se você está tendo problemas para construir as variáveis -sourceidentity e -targetidentity, você pode querer pré-construí-las antes de colocá-las no comando move-imaptoexchange ...

$sourceident="$username"+'@srcmail.dom.ain'
$targeditent="$username"+'@tgtmail.dom.ain'
    
por 03.06.2009 / 21:36
0

Você deve ser capaz de definir uma função ou um arquivo de script em torno do seu cmdlet, assim:

    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

}
    
por 03.06.2009 / 21:21