小编v3r*_*1ct的帖子

使用PoSH获取值,奇怪的结果

我使用PoSH查询我们的Exchange服务器以返回用户最大的邮箱.

我的PoSH是:

$test = Get-MailboxDatabase MBX_* -Status | select Name,@{Name="NumberofUsers";Expression={(Get-Mailbox -resultsize unlimited -Database $_.name).Count}} | Sort -Property NumberofUsers | Select Name -First 1
Run Code Online (Sandbox Code Playgroud)

这适用于控制台并返回:

Name
----
MBX_2
Run Code Online (Sandbox Code Playgroud)

但是,当我在脚本中运行它并返回值时,它是这样的:

$test = Get-MailboxDatabase -Status MBX_*| select Name,@{Name="NumberofUsers";Expression={(Get-Mailbox -resultsize unlimited -Database $_.name).Count}} | Sort -Property NumberofUsers | Select Name -First 1
Write-Host "Using $test"

Using @<Name=MBX_2>
Run Code Online (Sandbox Code Playgroud)

为什么它包括@<Name=>角色,我怎么能阻止它这样做呢?我需要能够为我的脚本的下一部分获取"MBX_2"的返回值,我对如何解决此问题感到困惑...

powershell exchange-server

3
推荐指数
1
解决办法
23
查看次数

PowerShell函数有参数吗?

我有一个我无法弄清楚的PoSH脚本没有运行..

function Connect-AD
{
    Param($mod,$cmd)
    Write-Host "$mod $cmd"
    Write-Host "`tConnecting to AD: $DC`n"
    $ADSession = New-PSsession -ComputerName $DC -Credential $MyCredential
    Invoke-Command -Command {Import-Module ('$mod') -Cmdlet ('$cmd')} -Session $ADSession
    Import-PSSession -Session $ADSession -Module ('$mod') -Prefix r | Out-Null
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试用这个来调用它.

Connect-AD -mod 'ActiveDirectory' -cmd 'Get-ADUser,New-ADUser'
Run Code Online (Sandbox Code Playgroud)

但无论我做什么,我一直在......

未加载指定的模块'$ mod',因为在任何模块目录中都找不到有效的模块文件.

函数内部的Write-Host正确输出参数,因此它已经走得那么远了.但是它没有被传递到Invoke-Command或Import-PSSession?

我已经尝试了不同的方法来逃避参数等.但没有运气.

我做得不好?有人能帮帮我吗?谢谢.

powershell

1
推荐指数
1
解决办法
525
查看次数

标签 统计

powershell ×2

exchange-server ×1