Powershell查询在提示符下工作,但不在脚本中

问题描述:

我想制作一个脚本,它接受主机名的输入并告诉我当前登录的用户。当我在PowerShell提示符(作为管理员)上逐一运行命令时,它工作正常,但是当我运行实际脚本本身时不会产生预期的输出。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 

当在命令行中运行,我得到了正确的用户。当作为脚本运行时,我得到“没有当前登录的用户”。我不知道为什么会发生这种情况。

编辑:我想提及我有输出写入文件,在上面的代码中进行了更改很重要。

+1

请提供完整的脚本,至少包含'param()'部分,以及您的示例代码。样本是否与脚本相同,或者您是否从多个位置复制/粘贴以给我们一个样本(可能是一个可变范围问题)。最后,你是否在具有管理权限的控制台中使用脚本? – 2013-02-08 21:03:54

+1

对不起,我现在明白得更清楚了。这是脚本结尾的摘录。我唯一没有包括的是它如何得到$ Hostname变量,但是这真的不应该是 – user2055535 2013-02-08 21:43:21

+1

okey。你可以插入'写主机'主机名是:$主机名“; Write-Host“主机名的类型是:$($ Hostname.gettype()。name)''get-wmiobject ...'part之前,看看它是否输出有效的主机名和”String“类型?:) – 2013-02-08 21:46:58

检查您有任何输入为$Hostname变量的额外字符,如换行`n。当你输入它时,它可能不会给你一个错误和工作,因为它不必处理那样的事情。

+1

就是这样,在每个主机名的末尾都有一个'n,所以它可以在数组中添加一个新的。 ! – user2055535 2013-02-11 19:58:58