почему мои результаты PowerShell повторяются? - PullRequest
1 голос
/ 19 августа 2011

Добрый день,

Новичок PowerShell здесь ...

Если я вывожу на экран так:

    foreach($databasePermission in $database.EnumDatabasePermissions($user.Name))
{
    Write-Host $databasePermission.PermissionState $databasePermission.PermissionType "TO" $databasePermission.Grantee
} 

Я получаю вот что я хочу:

Grant CONNECT TO dbo

Однако, если я попытаюсь вывести текстовый файл следующим образом:

    foreach($databasePermission in $database.EnumDatabasePermissions($user.Name))
{
    "$databasePermission.PermissionState $databasePermission.PermissionType TO $databasePermission.Grantee" | Out-File $filename
} 

Мои результаты повторяются так:

[dbname] Database: cust_serv, Grant, CONNECT.PermissionState [dbname] Database: cust_serv, Grant, CONNECT.PermissionType TO [dbname] Database: cust_serv, Grant, CONNECT.Grantee

Спасибо!

Ответы [ 2 ]

3 голосов
/ 19 августа 2011

Если вы обращаетесь к свойствам объекта в строке, вы должны заключить его в $(...):

Посмотрите на разницу между

"$databasePermission.PermissionState"

и

"$($databasePermission.PermissionState)"
2 голосов
/ 19 августа 2011

Хороший способ создания длинных строк - использовать форматирование строки.Это более читабельно (по крайней мере, Imo, так как вам не нужно делать $($...) и т. Д.):

"{0} {1} TO {2}" -f $databasePermission.PermissionState,$databasePermission.PermissionType,$databasePermission.Grantee
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...