首先发布在这里!
我正在寻求改进对Windows 2008 R2上的DFS复制的监控,因此无法访问2012年及以上可用的更好的PS cmdlet。我遇到了一个奇怪的事情,并想知道要离开它,拜托?我有点像PS新手所以我希望解决方案很容易。 : - )
我使用WMI查询DFSR VolumeInfo(参见ref),所以:
$DFSVolumeInfo = gwmi -Namespace "root\MicrosoftDFS" -Computer $DFSServer -query "select * from DfsrVolumeInfo"
现在,如果我没有返回,然后使用引号:
write-host $DFSVolumeInfo.VolumePath
\\.\E: \\.\D:
write-host "$DFSVolumeInfo.VolumePath"
\\DC2-SRV-DFS01\root\MicrosoftDFS:DfsrVolumeInfo.VolumeGuid="6C4C4203-2BC9-11E4-9EF3-0050568815FA"
\\DC2-SRV-DFS01\root\MicrosoftDFS:DfsrVolumeInfo.VolumeGuid="D214D634-F794-11E3-9EF3-0050568815FA".VolumePath
后者也给VolumeGuid
。
该类为VolumePath
VolumePath数据类型:字符串
访问类型:只读
限定符:DisplayName
(“复制组GUID”)卷路径格式;这可以是\\.\C:
或\\?\volume{GUID}
。
无论如何返回VolumePath,即C:,D:等引号内,而不是GUID?
输出需要更具人性化,因此我将使用引号回显输出,即"$DFSVolumeInfo.VolumePath on $DFSServer has a state of $DFSVolumeInfo.State"
答案 0 :(得分:1)
你可以直接在一个字符串中嵌入一个变量:"$Variable"
但是如果你需要一个更复杂的语句,即使只是访问一个属性,它也只会嵌入变量名(.
以及之后的所有内容,当嵌入字符串时将按字面解释)。您有几个选择:
"Here's a thing: $($DFSVolumeInfo.VolumePath) <-- that's a thing"
首先评估$()
内的任何内容,然后插入字符串中。它可能是一个完整的PowerShell程序。
"Here's a thing: " + $DFSVolumeInfo.VolumePath + " <-- that's a thing"
将它拆开并将值加在一起。
-f
operator "Here's a thing: {0} <-- that's a thing" -f $DFSVolumeInfo.VolumePath
使字符串成为格式表达式,然后填充传递给运算符右侧的值。
$computedValue = $DFSVolumeInfo.VolumePath
"Here's a thing: $computedValue <-- that's a thing"