小编Gos*_*ega的帖子

Powershell 检查变量是否为对象

[在两个答案都说不清楚之后编辑] 我的目标:根据传递给函数的内容是“对象”类型的东西(例如数组、哈希表)还是简单的“字符串”类型的东西,执行不同的操作。如果它只是一个字符串,我会简单地将它包含在电子邮件正文中。如果它是一个数组或哈希表,我需要对其进行一堆处理才能将其转换为 HTML 表。

[原始问题文本] 我将一个变量传递$body给一个函数Email-Report,该函数可以是一个简单的字符串或一个对象(例如一个哈希表或数组)。我想检查是否$body是一个对象并根据情况做不同的事情。我的问题是$body几乎可以是任何东西,而不仅仅是字符串或哈希表。所以我不能只是检查是否$body.GetType().Name -eq String

我试过$body.GetType().Name哪个返回

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Hashtable                                System.Object
Run Code Online (Sandbox Code Playgroud)

然而,如果变量是一个数组BaseTypeSystem.Array,所以我不能过滤器上该属性,也如上所述$body变量可能并不总是一个散列表或阵列。如果它是一个哈希表,则$var.GetType()返回 BaseType System.Object,但是我似乎无法引用 BaseType 属性。 ($hash.GetType()).BaseType返回另一个对象本身,它本身具有一个空白的 BaseType 属性。

我也试过$body.IsObject$body.IsObject()但这些方法似乎不存在。我也试过$body -eq [System.Object]我期望的$true,但它返回$false

不知道从哪里开始 - 我想我遗漏了一些明显的东西或有一个逻辑错误。

powershell

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

标签 统计

powershell ×1