Powershell 如何将值用作变量?

Powershell 如何将值用作变量?,powershell,office365,Powershell,Office365,我正在创建一个Powershell脚本,可用于在Office 365中将邮箱转换为共享邮箱。但首先我想检查邮箱是否处于共享状态 如果我运行此命令,我会得到一个答案: Get-Mailbox -identity $user | select-object IsShared IsShared -------- False 所以我想用这个值,在这个例子中是False $user = Read-Host -Prompt "What mailbox to check?" $status = Ge

我正在创建一个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) 

显然,我需要改变一些事情。但是什么呢?

即使它只是显示一个
False
的输出,它也不是一个字符串
“true”
/
“False”
(注意引号)它是一个
$true
/
$False

要检查
IsShared
,而不是使用
Select Object
(还需要
ExpandProperty
才能正常工作),可以使用
$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" }
如果,您也可以翻转
,因为默认情况下它会检查
$true

if ($status.IsShared) { Write-Host "$user status is shared" }
else { Write-Host "$user status is NOT shared" }

尽管它只是显示了一个输出
False
,但它不是一个字符串
“true”
/
“False”
(注意引号)它是一个
$true
/
$False

要检查
IsShared
,而不是使用
Select Object
(还需要
ExpandProperty
才能正常工作),可以使用
$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" }
如果
,您也可以翻转
,因为默认情况下它会检查
$true

if ($status.IsShared) { Write-Host "$user status is shared" }
else { Write-Host "$user status is NOT shared" }

您必须将
Get Mailbox-identity$user | select object IsShared
替换为
Get Mailbox-identity$user | select-ExpandProperty IsShared

前者并不完全返回false,而后者返回false。

您必须将
Get Mailbox-identity$user | select object IsShared
替换为
Get Mailbox-identity$user | select-ExpandProperty IsShared

前者不完全返回false,而后者返回false。

它不是字符串
“true”
/
“false”
(注意引号)它是一个布尔值
$true
/
$false
,所以您需要这样检查:
$status-eq$false
好的,谢谢您的输入。我改变了它,现在删除了引号,并在前面添加了$-符号:If($status-eq$false),但我仍然得到相同的输出。而不是正确的输出你会有另一个问题。在进行比较之前,需要首先从对象展开值
.| select object-ExpandProperty是共享的
@Matt谢谢,这似乎完成了trickIt不是字符串
“true”
/
“false”
(注意引号)它是一个布尔值
$true
/
$false
,所以你需要这样检查:
$status-eq$false
好的谢谢你的输入。我改变了它,现在删除了引号,并在前面添加了$-符号:If($status-eq$false),但我仍然得到相同的输出。而不是正确的输出你会有另一个问题。在进行比较之前,需要首先从对象展开值
..|选择对象-ExpandProperty共享
@Matt谢谢,这似乎成功了