2017-02-07 3 views
0

Я пытаюсь удалить "\ MOSS2013" имя экземпляра из моего экземпляра SQL Server "WSFCSQLN1 \ MOSS2013"Powershell TRIM() удаляет дополнительный символ

Это работает:

$primaryReplicaGEN = $wsfcsqln2.AvailabilityGroups.PrimaryReplicaServerName 
$primaryReplica = $PrimaryReplicaGEN.TRIM("\GEN") 

$ primaryReplica показывает WSFCSQLN1

$ primaryReplicaGEN показывает WSFCSQLN1 \ GEN

Это не ш орк:

$primaryReplicaMOSS2013 = $wsfcsqln1MOSS2013.AvailabilityGroups.PrimaryReplicaServerName 
$primaryReplica = $PrimaryReplicaMOSS2013.TRIM("\MOSS2013") 

$ primaryReplica показывает WSFCSQLN

$ primaryReplicaMOSS2013 показывает WSFCSQLN1 \ MOSS2013

Обратите внимание на имя реплики отсутствует 1 в конце, даже если я не выбирал, чтобы обрезать его. Почему это обрезает 1 для данного конкретного объекта строки? Как я могу заставить его обрезать правильные символы.

ответ

2

Trim() превращает аргумент строки в [char[]] и удаляет любые из этих символов с обоих концов строки.

Если вы просто хотите, чтобы захватить имя сервера, используйте оператор -split и затем удалите имя экземпляра:

$ServerName = 'WSFCSQLN1\MOSS2013' -split '\\' |Select-Object -First 1 

или

$ServerName,$null = 'WSFCSQLN1\MOSS2013' -split '\\' 
2

ну, вот как работает обрезка, он удалит все вхождения всех персонажей, которые вы собираетесь обрезать, к чему он может добраться.

"agababga".Trim("ag") 

вернуться бы bab не ababga, обратите внимание, что не дифферент a внутри bab, поскольку он не может обрезать b, если вы:

"agababga".Trim("agb") 

вы не получите ничего (пустая строка) в ответ

1

Я хотел бы использовать разделить вызов:

$primaryReplica = $PrimaryReplicaGEN.split('\')[0]; 
1

вы можете использовать convertfrom-string too li ke это

$SplitedVar='WSFCSQLN1\MOSS2013' | ConvertFrom-String -Delimiter "\\" -PropertyNames "Domain", "ServerName" 
$SplitedVar.Domain 
$SplitedVar.ServerName 
Смежные вопросы