Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的PowerShell结果会重复?_Powershell - Fatal编程技术网

为什么我的PowerShell结果会重复?

为什么我的PowerShell结果会重复?,powershell,Powershell,你好 这里是PowerShell新秀 如果我像这样输出到屏幕: foreach($databasePermission in $database.EnumDatabasePermissions($user.Name)) { Write-Host $databasePermission.PermissionState $databasePermission.PermissionType "TO" $databasePermission.Grantee } foreach

你好

这里是PowerShell新秀

如果我像这样输出到屏幕:

    foreach($databasePermission in $database.EnumDatabasePermissions($user.Name))
{
    Write-Host $databasePermission.PermissionState $databasePermission.PermissionType "TO" $databasePermission.Grantee
} 
    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
我得到了这个,这就是我想要的:

Grant CONNECT TO dbo
但是,如果我尝试输出到如下文本文件:

    foreach($databasePermission in $database.EnumDatabasePermissions($user.Name))
{
    Write-Host $databasePermission.PermissionState $databasePermission.PermissionType "TO" $databasePermission.Grantee
} 
    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
我的结果重复如下:

    foreach($databasePermission in $database.EnumDatabasePermissions($user.Name))
{
    Write-Host $databasePermission.PermissionState $databasePermission.PermissionType "TO" $databasePermission.Grantee
} 
    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

谢谢

如果访问字符串中对象的属性,则必须将其括在
$(…)
中:

看看两者之间的区别

"$databasePermission.PermissionState"


如果访问字符串中对象的属性,则必须将其括在
$(…)
中:

看看两者之间的区别

"$databasePermission.PermissionState"


构造长字符串的好方法是使用字符串格式。它更具可读性(至少在我看来,因为您不必执行
$($…)
等操作):


构造长字符串的好方法是使用字符串格式。它更具可读性(至少在我看来,因为您不必执行
$($…)
等操作):