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 

Когда побежал в командной строке, я получаю правильный пользователь. Когда вы запускались как сценарий, я получаю «No Current logged on user». Я не знаю, почему это происходит.

EDIT: Я полагаю, важно отметить, что у меня есть вывод, записываемый в файл, внесенные изменения в код выше.

+1

Предоставьте полный скрипт, по крайней мере, часть 'param()' и код вокруг вашего образца. Является ли образец идентичным сценарию или вы копируете/вставляете из многолистных мест, чтобы дать нам образец (может быть проблемой с переменной областью). Наконец, вы создали скрипт в консоли с правами администратора? –

+1

Извините, теперь я понимаю более четко. Это отрывок из конца сценария. Единственное, что я не включил, это то, как он получил переменную $ Hostname, но это действительно не должно быть – user2055535

+1

okey. Можете ли вы вставить «Write-Host» Hostname: $ Hostname »; Write-Host "Hostname имеет тип: $ ($ Hostname.gettype(). Name)' перед частью 'get-wmiobject ...' и посмотреть, выводит ли он допустимое имя хоста и «String» как type? :) –

ответ

0

Проверьте, есть ли у вас вход для переменной $Hostname для дополнительных символов, таких как новая строка `n. Когда вы вводите его, он может не дать вам ошибку и работать, потому что ему не нужно обрабатывать подобные вещи.

+1

Так оно и было. В конце каждого имени хоста было 'n в конце каждого имени, чтобы он мог добавить новый в массив. Взял эту строку, и она сработала. ! – user2055535

Смежные вопросы