Я пытаюсь создать скрипт, который принимает ввод имени хоста и сообщает мне текущего пользователя. Он работает, когда я запускаю команду один за другим в приглашении 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: Я полагаю, важно отметить, что у меня есть вывод, записываемый в файл, внесенные изменения в код выше.
Предоставьте полный скрипт, по крайней мере, часть 'param()' и код вокруг вашего образца. Является ли образец идентичным сценарию или вы копируете/вставляете из многолистных мест, чтобы дать нам образец (может быть проблемой с переменной областью). Наконец, вы создали скрипт в консоли с правами администратора? –
Извините, теперь я понимаю более четко. Это отрывок из конца сценария. Единственное, что я не включил, это то, как он получил переменную $ Hostname, но это действительно не должно быть – user2055535
okey. Можете ли вы вставить «Write-Host» Hostname: $ Hostname »; Write-Host "Hostname имеет тип: $ ($ Hostname.gettype(). Name)' перед частью 'get-wmiobject ...' и посмотреть, выводит ли он допустимое имя хоста и «String» как type? :) –