我正在尝试创建一个使用以下代码的PowerShell脚本。我相信具有空格的projects文件夹导致了我的错误,但我无法想出解决方案。我尝试过许多不同的堆叠溢出解决方案,但都没有成功。我不是PowerShell的人,所以我知道这是很简单的事情(也许)。有人来帮我..。
脚本代码:
Write-Host ""
$projectsFolder = Read-Host **'E:\Work - VS.NET 2022'**
Write-Host ""
Write-Host "Adding Path Exclusion: " $projectsFolder
Add-MpPreference -ExclusionPath $projectsFolder
foreach ($exclusion in $pathExclusions)
{
Write-Host "Adding Path Exclusion: " $exclusion
Add-MpPreference -ExclusionPath $exclusion
}错误:
Adding Path Exclusion: Add-MpPreference : Cannot validate argument
on parameter 'ExclusionPath'. The argument is null or empty. Provide
an argument that is not null or empty, and then try the command
again. At E:\Work - VS.NET 2022\Tools\Visual
Studio\Windows_Defender_Exclusions_VS_2022.ps1:54 char:33
+ Add-MpPreference -ExclusionPath $projectsFolder
+ ~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Add-MpPreference], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Add-MpPreference发布于 2022-01-03 15:53:38
我不认为你想read host。我想你想要一个文件的内容。您的代码将类似于底部,但我还添加了一个简单的read-host供您查看。
==========read-host================
$YesNoResponse = $null
while ($YesNoResponse -ne "y" -and $YesNoResponse -ne "n") {
Clear-Host
write-host “Yes or No?”
Write-Host "Please confirm."
$YesNoResponse = Read-Host " [Y/N] "
If ($YesNoResponse -eq "") {
Write-Host "Enter was inputted"
Return $null
}
}我想你是想做这样的事。如果您需要其他的东西,请扩展。
Write-Host ""
$projectsFolder = Import-Csv 'E:\Work - VS.NET 2022'
Write-Host ""
Write-Host "Adding Path Exclusion: "
$projectsFolder = Add-MpPreference -ExclusionPath $projectsFolder
foreach ($exclusion in $pathExclusions) {
Write-Host "Adding Path Exclusion: "
$exclusion = Add-MpPreference -ExclusionPath $exclusion }发布于 2022-01-04 14:23:13
脚本中的问题是,您使用的循环($pathExclusions)数组没有创建,因此是空的,导致$exclusion变量始终为空/空.这解释了你的错误信息。
如果目标是提示用户手动输入要处理的目录列表,那么您可以这样做:
# Create the exclusions array (of strings)
$pathExclusions = @()
Write-Host ""
$projectsFolder = Read-Host **'E:\Work - VS.NET 2022'**
# Press Enter at read-host prompt to exit the loop
while ($projectsFolder -ne "") {
$pathExclusions += $projectsFolder
$projectsFolder = Read-Host **'E:\Work - VS.NET 2022'**
}
Write-Host ""
# Process each item in the exclusions array
# Loop not executed if $pathExclusions is empty so no error message
foreach ($exclusion in $pathExclusions) {
Write-Host "Adding Path Exclusion: " $exclusion
Add-MpPreference -ExclusionPath $exclusion
}如果目标是从文件中获取目录列表,那么只需通过获取文件内容而不是Read循环来填充排除数组:
$pathExclusions = Get-Content -Path "c:\temp\exclusionsfile.txt"https://stackoverflow.com/questions/70568218
复制相似问题