如何将输出字符串转换为可以使用get-itempropertyvalue引用的字符串



我对Powershell和stackoverflow还比较陌生,所以很抱歉出现错误。我一直在为自己设定这样的工作,所以非常感谢任何帮助。

因此,我试图编写一个脚本,将只有管理员才能访问的源文件夹(包含.ps1脚本(和用户可以访问的文件夹(包含指向源文件夹的运行.ps1脚本的快捷方式(的内容进行比较

源文件夹中显示的任何内容,如果快捷方式文件夹中没有相关文件,都会被删除,源文件夹中没有显示的任何东西,都会在快捷方式文件夹创建一个新的快捷方式(我完全不知道如何在powershell中创建快捷方式,更不用说如何进入高级选项并将其设置为以管理员身份运行(

我正在处理这个脚本的开头,试图获得可用格式中缺少的文件名

现在这就是我的

$sourcelist = Get-ChildItem -path "C:UsersyoDocumentsPowershell Labdump" | Get-ItemPropertyvalue -name "name"
$shortcutlist = Get-ChildItem -path "C:UsersyoDocumentsPowershell Labfixes" | Get-ItemPropertyvalue -name "name"
$dif = Compare-Object -ReferenceObject $sourcelist -DifferenceObject $shortcutlist
$arr = $dif -split "=" -split ";"
$arr[1]
$arr[6]
$arr[11]

此输出

abc.txt
find.ps1
hello!.txt

(仍然不知道我会如何分割不同的文件,以便能够引用它们来创建快捷方式,稍后无法使用(

这种使用-split的方法可以满足我的需要(返回$shortcutlist中缺少的文件名(,但它需要我为它可能找到的(可能被分配的(重复$arr[x]

到目前为止$dif输出这个

InputObject SideIndicator
----------- ------------- 
abc.txt     <=            
find.ps1    <=            
hello!.txt  <=   

尝试

Compare-Object -ReferenceObject $sourcelist -DifferenceObject
$shortcutlist | get-itemproperty -name "inputobject"

输出

Cannot find path 'C:windowssystem32@{InputObject=abc.txt; SideIndicator=<=}' because it does not exist.

即使这样做有效,我也不确定如何选择每个文件(这是另一个时间的问题(

我修复它的一个潜在想法是把我认为是$dif的字符串输出变成一个对象?真的对此一无所知,所以不确定输出是否就是你所说的字符串。

不管怎样,谢谢你的时间,任何信息都很感激。如果你想用完全不同的方式来做,请告诉我:(

最终,我喜欢修改它,以便能够检查文件夹等中文件的内容,但现在我只是在做这件事。

不使用-split,而是使用Where-Objectcmdlet根据SideIndicator的值筛选Compare-Object的输出,然后使用ForEach-Object仅获取每个结果对象的InputObject属性的值:

$sourceNoShortcutList = Compare-Object -ReferenceObject $sourcelist -DifferenceObject $shortcutlist |Where-Object SideIndicator -eq '<=' |ForEach-Object InputObject

即使这样做有效,我也不确定如何选择每个文件(这是另一个时间的问题(

在结果数组上循环:

foreach($filename in $sourceNoShortcutList){
$filePath = Join-Path "C:UsersyoDocumentsPowershell Labdump" $fileName 
Remove-Item -LiteralPath $filePath
}

相关内容

  • 没有找到相关文章

最新更新