Я пытаюсь создать скрипт, который вводит имя хоста и сообщает мне текущего пользователя, вошедшего в систему. Он работает, когда я запускаю команду одну за другой в приглашении 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()
, и код вашего примера. Образец идентичен сценарию, или вы скопировали/вставили его из нескольких мест, чтобы дать нам образец (может быть проблема с переменной областью действия). Наконец-то вы скрипт в консоли с админскими правами делали? - person Frode F.   schedule 09.02.2013Write-Host "Hostname is: $Hostname"; Write-Host "Hostname is of type: $($Hostname.gettype().name)
перед частьюget-wmiobject...
и посмотреть, выводит ли он допустимое имя хоста и строку в качестве типа? :) - person Frode F.   schedule 09.02.2013"No Hostname to lookup user"
, если длина$hostnames
также меньше 1. - person user2055535   schedule 09.02.2013"Get-WmiObject : The RPC server is unavailable
. При запуске построчно я не получаю эту проблему и возвращаю правильную информацию. - person user2055535   schedule 11.02.2013