【发布时间】:2013-02-08 19:21:31
【问题描述】:
我正在尝试制作一个脚本,该脚本接受主机名的输入并告诉我当前登录的用户。当我在 powershell 提示符下(作为管理员)一一运行命令时它可以工作,但是当我运行实际脚本本身时不会产生预期的输出。
以下是相关代码:
$Row.Hostname = $Hostname
$getwmiobject = Get-WmiObject -class Win32_computersystem -computername $Hostname
$Username = $Getwmiobject.username
if($UserName -eq $NULL) {
$Row.Username = "No Current Logged on User"
}
else {$Row.Username = $Username
}
$csvfile += $Row
$csvfile |sort-object Hostname | Export-Csv "foo.csv
在命令行中运行时,我得到了正确的用户。当作为脚本运行时,我得到“没有当前登录用户”。我不知道为什么会这样。
编辑:我想值得一提的是,我已将输出写入文件,并在上面的代码中进行了更改。
【问题讨论】:
-
请提供完整的脚本,至少是
param()部分,以及围绕您的示例的代码。示例是否与脚本相同,或者您是否从多个地方复制/粘贴给我们一个示例(可能是变量范围问题)。最后,您是否在具有管理员权限的控制台中编写了脚本? -
对不起,我现在明白的更清楚了。这是脚本末尾的摘录。我唯一没有包括的是它是如何获得 $Hostname 变量的,但这并不重要
-
好的。您可以在
get-wmiobject...部分之前插入Write-Host "Hostname is: $Hostname"; Write-Host "Hostname is of type: $($Hostname.gettype().name)并查看它是否输出有效的主机名和“字符串”作为类型? :) -
它提取的所有主机名都作为有效字符串输出。如果
$hostnames的长度也小于1,我有一张支票,上面写着"No Hostname to lookup user"。 -
权利呢?你也以管理员身份运行脚本吗?
标签: powershell windows-server-2008-r2 powershell-3.0 domaincontroller