在某些情况下,选择NoteProperty不起作用

时间:2017-10-26 17:08:01

标签: powershell

我试图在我的配置文件脚本中放置一个表达式,它将告诉哪个脚本正在运行。从$PROFILE变量中获取它而不是硬编码各种范围名称会很有帮助。

只有最后一个表达式设置$scope似乎可以正常工作。似乎Where-Object不只选择一个名称。为什么前两个表达式将$scope变量设置为所有四个范围名称?

$scope = $PROFILE |
    Get-Member -Type NoteProperty |
    Where-Object { $_.Definition.EndsWith($MyInvocation.MyCommand.Source) } |
    % { $_.Name }
Write-Host $scope

$scope = $PROFILE |
    Get-Member -Type NoteProperty |
    Where-Object { $_.Definition.EndsWith($($MyInvocation.MyCommand.Source)) } |
    % { $_.Name }
Write-Host $scope

$s = $($MyInvocation.MyCommand.Source)
$scope = $PROFILE |
    Get-Member -Type NoteProperty |
    Where-Object { $_.Definition.EndsWith($s) } |
    % { $_.Name }
Write-Host $scope

输出显示只有最后一个表达式选择一个名称。

AllUsersAllHosts AllUsersCurrentHost CurrentUserAllHosts CurrentUserCurrentHost
AllUsersAllHosts AllUsersCurrentHost CurrentUserAllHosts CurrentUserCurrentHost
CurrentUserAllHosts

0 个答案:

没有答案