$profile
вызывает у меня некоторые головные боли. $Profile.GetType()
разрешается в String
, что нормально, но имеет значения NoteProperty:
$profile | Get-Member -Type NoteProperty
AllUsersAllHosts, AllUsersCurrentHost, CurrentUserAllHosts, CurrentUserCurrentHost
Когда я набираю $profile
, возвращается NoteProperty CurrentUserCurrentHost. Это нормально, но мне нужно изменить это значение - это сложно, но мой корпоративный VPN использует сетевой профиль, и когда я в сети, он пытается сослаться на это местоположение для моего $profile
, что означает, что каждый запуск консоли занимает 9 секунд (ужасно медленно ). Я могу получить это значение до 1 se c, если профиль загружен локально, но это означает изменение этих значений. Чтобы сделать это, я поместил следующее в AllUsersAllHosts
profile.ps1
$profile = C:\Users\($env:Username)\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"
Это нормально, но, делая это, я обнаружил, что все значения NoteProperty удалены! Поэтому я попытался:
$profile.CurrentUserCurrentHost = C:\Users\($env:Username)\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"
Но это не удалось, так как значение root $ Profile продолжает указывать на сетевой профиль, а запуск консоли снова через 9 секунд!
Затем я тоже заметил следующую странность:
$x = [string]$profile
$x -eq $profile
Вот основные вопросы:
• Почему $ x возвращает True
, хотя у $ x нет ни одного из NoteProperty
значений в $profile
(поскольку объекты определенно не совпадают!)?
• Как мне контролировать значение root $profile
, не разрушая значения NoteProperty
и
• Как я могу обновить .CurrentUserAllHosts
и .CurrentUserCurrentHost
таким образом, чтобы значение root также обновлялось соответствующим образом? т.е. даже если я сделаю следующее, значение root $profile
останется неизменным (все еще указывает на очень медленное расположение профиля сети):
Add-Member -InputObject $PROFILE -NotePropertyName "AllUsersAllHosts" -NotePropertyValue "C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1"
Add-Member -InputObject $PROFILE -NotePropertyName "AllUsersCurrentHost" -NotePropertyValue "C:\Windows\System32\WindowsPowerShell\v1.0\Microsoft.PowerShell_profile.ps1"
Add-Member -InputObject $PROFILE -NotePropertyName "CurrentUserAllHosts" -NotePropertyValue "C:\Users\$($env:Username)\Documents\WindowsPowerShell\profile.ps1"
Add-Member -InputObject $PROFILE -NotePropertyName "CurrentUserCurrentHost" -NotePropertyValue "C:\Users\$($env:Username)\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"