[在两个答案都说不清楚之后编辑] 我的目标:根据传递给函数的内容是“对象”类型的东西(例如数组、哈希表)还是简单的“字符串”类型的东西,执行不同的操作。如果它只是一个字符串,我会简单地将它包含在电子邮件正文中。如果它是一个数组或哈希表,我需要对其进行一堆处理才能将其转换为 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)
然而,如果变量是一个数组BaseType变System.Array,所以我不能过滤器上该属性,也如上所述$body变量可能并不总是一个散列表或阵列。如果它是一个哈希表,则$var.GetType()返回 BaseType System.Object,但是我似乎无法引用 BaseType 属性。
($hash.GetType()).BaseType返回另一个对象本身,它本身具有一个空白的 BaseType 属性。
我也试过$body.IsObject,$body.IsObject()但这些方法似乎不存在。我也试过$body -eq [System.Object]我期望的$true,但它返回$false。
不知道从哪里开始 - 我想我遗漏了一些明显的东西或有一个逻辑错误。
powershell ×1