$fullnamexp = ((net user $winxp /domain | Select-String "Full Name") -replace "Full Name","").Trim();
Если $winxp
не может быть найден, то команда будет висеть, есть тайм-аут, я могу использовать с этим, чтобы заставить его двигаться дальше через 5-10 секунд? Не знаю, где бы я это сказал.добавив таймаут к партии/PowerShell
Edit- Я использую это, чтобы вытащить имя пользователя:
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $tag1)
$key = $reg.OpenSubKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon')
$winxp = $key.GetValue('DefaultUserName') -replace '^.*?\\'
$winxp
затем имя Войти, такие как ajstepanik
тогда я положил его в: $fullnamexp = ((net user $winxp /domain | Select-String "Full Name") -replace "Full Name","").Trim();
1.21.2014 Обновление
$timeoutSeconds = 5
$code = {
((net user $winxp /domain | Select-String "Full Name") -replace "Full Name","").Trim(); # your commands here, e.g.
}
$j = Start-Job -ScriptBlock $code
if (Wait-Job $j -Timeout $timeoutSeconds) { $fullnamexp = Receive-Job $j }
Remove-Job -force $j
Это что-то, что вы делаете в одном экземпляре, или вы делаете несколько итераций разных пользователей в цикле? – mjolinor
Я использую вышеприведенную команду в одном скрипте powershell дважды, один для windows xp, один для Windows 7, и скрипт сможет работать только для одного из двух, поэтому один будет зависать, и я хочу, чтобы он таймаутом быстрее. Более крупный скрипт вытаскивает имя пользователя, и эта строка, которую я разместил здесь, переводит это имя пользователя на полное имя человека, но поскольку у меня есть большой скрипт, проверьте реестр winxp и win7, он найдет только тот или иной, который почему я хотел таймаут, если это возможно .. – Aaron