Powershell Anfänger Problem mit Get-Childitem?

1 Antwort

Musst du nicht noch von $folder die Kinderelmente entnehmen? Also ungefähr so '$.folder.Get-ChildItem'? (ich kenn mich mit Powershell nicht wirklich aus, nur mit C#, aber es dürfte/müsste so ähnlich gehen)

PowerShell: "Es wurde kein Positionsparameter gefunden, der das Argument "+" akzeptiert." Wie löse ich das?

Hi

Es geht um Reports... Programmiert wurde es mit PowerShell ISE

Hier der Fehler:

Rename-Item : Es wurde kein Positionsparameter gefunden, der das    Argument  "+" akzeptiert.
In Zeile:34 Zeichen:1
+ rename-item "c:\Reporting\Report_Telephone_" + $todaydate[0] +'-' + $todaydate[1 ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Rename-Item], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.RenameItemCommand

hier mein Code:

#today's date (year-month-day)
$todaydate = Get-Date -Format yyyy-MM-dd

#arrays  (today => systemtime)
$todaydate = $todaydate.Split('-')
$todaydate[0] #year
$todaydate[1] #month
$todaydate[2] #day

#arrays yesterday (systemtime - one day)
$yesterdaysdate = Get-Date((Get-Date).AddDays(-1)) -Format yyyy-MM-dd
$yesterdaysdate = $yesterdaysdate.Split('-')
$yesterdaysdate[0] #year
$yesterdaysdate[1] #month
$yesterdaysdate[2] #day

#arrays yesterday (systemtime - one day)
$lastmonth = Get-Date((Get-Date).AddMonths(-1)) -Format yyyy-MM-dd
$lastmonth = $lastmonth.Split('-')
$lastmonth[0] #year
$lastmonth[1] #month
$lastmonth[2] #day


#Example 1:  Filename "Report_Telephone_yyyy-mm" => in this case "Report_Telephone_2016-12"
#it renames the file -> minus one month, so the name must be "Report_Telephone_2016-11"
$filename='Report_Telephone_'+ $lastmonth[0]+'-'+ $lastmonth[1] + '.xlsx'
$filemonth = [int][regex]::Match($filename, '\w+_\d+_(\d+)').Groups[1].Value
$filemonth = "{0:D2}" -f ($filemonth - 1)

write-host $filename
rename-item "c:\Reporting\Report_Telephone_" + $todaydate[0] +'-' + $todaydate[1] + ".xlsx" -NewName $filename

$sourcepath='C:\Reporting\'+ $filename
write-host $sourcepath
$destinationpath='C:\Reporting\'+ $lastmonth[0]+'\'+ $lastmonth[1]
write-host $destinationpath
if(test-path $destinationpath)
{

} 
else 
  {
     mkdir $destinationpath
  }
move-item -path $sourcepath -destination $destinationpath

Hat einer ne Idee, wie ich das lösen könnte? Thx im vorraus :3

...zur Frage

Wie multipliziere ich richtig in Powershell?

Wie multipliziere ich richtig damit die Zahlen mir nicht 4mal ausgegeben wird?

$zahl = 2

$rechnung = $zahl * 4

weiter-Host "$rechnung"

...zur Frage

Powershell Autmatische Löschung?

Ich habe mit einem Freund ein Skript gemacht welches Automatisch alle Daten löscht. Jedoch möchten wir dass das Skript in den Ordern die neuste und älteste Datei nicht löscht.

Das Skript haben wir schon..

$date = Get-Date -UFormat "%Y_%m_%d"

$oldTime = [int]30 # 30 days

$logPath = “C:\Scripts\Logs\$date.log”

$errorLogPath = “C:\Scripts\Logs\$($date)_error.log”

$time = Get-Date -UFormat "%T"

$startime = date

 

 

"Starting run at $time

n" &gt;&gt; $logPath</p><p><br></p><p>"Starting run at $time
n" >> $errorLogPath

foreach ($path in Get-Content "pathList.txt") {

# Write information of what it is about to do

"Trying to delete files older than $oldTime days, in the folder $path" >> $logPath

# deleting the old files

Get-ChildItem $path -File -Recurse | WHERE {($_.LastWriteTime -le $(Get-Date).AddDays(-$oldTime))} | 

  ForEach-Object {

    "Deleting file $($_.FullName)" >> $logPath

    Remove-Item $_.FullName -Force -ErrorAction Continue

    if ((Get-Item $_.FullName -ErrorAction SilentlyContinue) -ne $null) {

      "File could not be deleted: $($_.FullName)" >> $errorLogPath

    }

  }

  "

n" &gt;&gt; $logPath</p><p>&nbsp;&nbsp;"
n" >> $errorLogPath

  $erroredFolders = New-Object "System.Collections.Generic.List[String]"

   

  while ($true) {

    $folders = Get-ChildItem "$path**" -Directory -Recurse | 

      WHERE {((Get-ChildItem $_ | Measure-Object).Count -eq 0)} |

      WHERE {($erroredFolders.Contains($_) -ne $true)}

     

    if ($folders.Length -eq 0) {

      break

    }

    "Trying to delete empty folders" >> $logPath

    $folders | ForEach-Object {

      "Deleting empty folder $($_.FullName)" >> $logPath

      Remove-Item $_ -Force -Recurse -ErrorAction Continue

      if ((Get-Item $_ -ErrorAction SilentlyContinue) -ne $null) {

        "Folder could not be deleted: $($_.FullName)" >> $errorLogPath

        $erroredFolders.Add($_.FullName)

      }

     }

   }

 

  "

n
n
n
n
n" &gt;&gt; $logPath</p><p>&nbsp;&nbsp;"
n
n
n
n
n" >> $errorLogPath

}

# Benötigte Zeit

$endtime = date

$time2 = $endtime - $startime

Write-Host "$($time.Hours)h:$($time.Minutes)m:$($time.Seconds)s:$($time.Milliseconds)ms" -BackgroundColor Magenta

"Benötigte Zeit $time2 `n" >> $logPath






...zur Frage

Wie kann man in Powershell Ergebnisse von Properties herausfiltern?

Ich habe eine Abfrage in PS geschrieben, um in Erfahrung zu bringen, auf ob und welche Berechtigungen eine bestimmte Gruppe auf Ordner in einem bestimmten Pfad haben.

$sName = GRUPPE
Get-ChildItem PFAD -Recurse | Where-Object {$_.PSIsContainer} | Get-Acl | Where-Object {$_.AccessToString -like $sName} | Select-Object PSParentPath,Path,AccessToString | fl

Als Ergebnis werden mir nun alle Gruppen wiedergegeben, die auf die aufgelisteten Ordner Zugriff haben. Wie kann ich diese herausfiltern bzw. wie kann ich mir nur meine gesuchte Gruppe mit Rechten anzeigen lassen?

Danke!

...zur Frage

Was mach ich falsch Batch?

  • if /I %ki%==was geht (
  • echo Rias: Nix, bei dir?
  • set kit-text=Nothing.
  • pause>nul
  • )

Es crasht immer :o was kann ich machen?

...zur Frage

Was möchtest Du wissen?