1

我想製作一個腳本,它接受主機名的輸入並告訴我當前登錄的用戶。當我在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

回答

0

檢查您有任何輸入爲$Hostname變量的額外字符,如換行`n。當你輸入它時,它可能不會給你一個錯誤和工作,因爲它不必處理那樣的事情。

+1

就是這樣,在每個主機名的末尾都有一個'n,所以它可以在數組中添加一個新的。 ! – user2055535 2013-02-11 19:58:58

相關問題