Я новичок в написании Powershell, и я работаю над пользовательским управлением Powershell script, но я столкнулся с странной ошибкой.
Следующий код работает, когда я запускаю его из оболочки, но не тогда, когда он запускается из script:
$UserCredential = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionURI http://servername/Powershell/ -Authentication Kerberos -Credential $UserCredential -AllowRedirection
Import-PSSession $Session
Когда я запускаю его в script с блоком Param()
в первой строке, он терпит неудачу со следующей ошибкой:
Import-PSSession: Cannot bind argument to parameter 'Path' becuase it is an empty string.
Я могу заставить Import-PSSession
работать, если я удалю блок Param()
, но я не уверен, как принимать аргументы командной строки для моего script в противном случае. Как я могу сохранить блок Param()
(или, вообще говоря, принять аргументы командной строки) и все еще иметь возможность импортировать сеанс PS?
Я использую Powershell v2 на сервере Windows 2008 R2, который пытается подключиться к серверу Exchange 2010.
Update:
У меня есть script с именем ManageUser.ps1
, который я запускаю из приглашения Powershell, например
.\ManageUser.ps1 -disableUser -username someuser
script начинается следующим образом:
Param(
[switch]$disableUser,
[string]$username
)
$UserCredential = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionURI http://servername/Powershell/ -Authentication Kerberos -Credential $UserCredential -AllowRedirection
Import-PSSession $Session
#more stuff past here...
Он не работает в команде Import-PSSession
. Но, если я удалю весь Param(...)
, импорт сеанса будет работать. Надеюсь, этого достаточно, чтобы вы это поняли!