如何使用值作为变量?

时间:2019-02-12 14:42:43

标签: powershell office365

我正在创建一个Powershell脚本,该脚本可用于将邮箱转换为Office 365中的共享邮箱。但是首先,我想检查邮箱的状态是否为“共享”。

如果运行此命令,我将得到答案:

Get-Mailbox -identity $user | select-object IsShared

IsShared
--------
   False

所以我想使用在这种情况下为False的值。

$user = Read-Host -Prompt "What mailbox to check?"
$status = Get-Mailbox -identity $user | select-object IsShared 

If ($status -eq "false") 
    {Write-Host "$user status is NOT shared"}
Else 
    {write-host "$user status is shared"}

问题是我只得到最后一条消息作为回报。即使我更改此代码:

If ($status -eq true) 

因此,显然我需要更改某些内容。但是呢?

2 个答案:

答案 0 :(得分:2)

即使仅显示False的输出,它也不是字符串"true" / "false"(请注意引号),而是boolean $true / { {1}}

要检查$false,而不是使用IsShared(也需要Select-Object才能正常工作),可以使用ExpandProperty来引用该属性。如果您以后希望在代码中使用其他对象的任何其他属性,则将保留原始对象不变。

(关于对象属性和值的blog post小。)

哪个放在一起会给出:

$status.IsShared

您还可以翻转$user = Read-Host -Prompt "What mailbox to check?" $status = Get-Mailbox -identity $user if ($status.IsShared -eq $false) { Write-Host "$user status is NOT shared" } else { Write-Host "$user status is shared" } ,因为默认情况下它将检查if

$true

答案 1 :(得分:0)

您必须将Get-Mailbox -identity $user | select-object IsShared替换为Get-Mailbox -identity $user | select -ExpandProperty IsShared 前者并非完全返回false,而后者则返回false。