我试图在我的配置文件脚本中放置一个表达式,它将告诉哪个脚本正在运行。从$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