Переименование моего элемента с именем файла в качестве переменной, не работающей с помощью Powershell - PullRequest
0 голосов
/ 11 марта 2020

Я использую Powershell. Моя цель - скопировать один элемент в другой каталог (что я уже знаю, как сделать), получить идентификатор пользователя (который я уже знаю, как это сделать) и переименовать файл с именем файла, который существует в переменной (которую я я не уверен, что я делаю неправильно).

Когда я запускаю свой код, он выдает ошибку: Rename-Item: Невозможно привязать аргумент к параметру 'NewName', потому что он равен нулю. Я не знаю, что я делаю неправильно.

Я получил это от https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/rename-item?view=powershell-7

Мой код указан ниже:

$name = [Environment]::UserName
$mainFile = "\\example\example.xlsx"
$copiedFile = "\\example\example\copiedFolder\example.xlsx"
#Once I have copied the file to the new directory, I do the following code which does not work:
$copiedFile = Rename-Item -Path $copiedFile -NewName $name.xlsx

Ответы [ 2 ]

0 голосов
/ 11 марта 2020

Я нашел решение и чувствую себя невероятно глупым, если не сделаю это первым. Я благодарю всех за их вклад и прошу прощения за все изменения в моем предыдущем коде. Моя проблема заключалась в том, что я не помещал двойные кавычки вокруг $ name.xlsx.

Это дает мне \ example \ example \ copiedFolder \ JohnDoe.xlsx Пробные одинарные кавычки и дает мне \ example \ example \ copiedFolder \ $ вместо name.xlsx. Не совсем уверен, почему. Смотрите код ниже:

$copiedFile = Rename-Item -Path $copiedFile -NewName "$name.xlsx"
0 голосов
/ 11 марта 2020

У тебя все сложнее. Это простая команда копирования.

Get-ChildItem -Path 'D:\temp\reconcile.*'
<#
# Results

    Directory: D:\temp


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        03-Feb-20     12:54            644 reconcile.txt
#>

$mainFile   = 'D:\temp\reconcile.txt'
$FileTarget = 'D:\temp\'
Copy-Item -Path $mainFile -Destination "$FileTarget\reconcile.xlsx" -Force
Get-ChildItem -Path 'D:\temp\reconcile.*'
<#
# Results


    Directory: D:\temp


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        03-Feb-20     12:54            644 reconcile.txt                                                                                                 
-a----        03-Feb-20     12:54            644 reconcile.xlsx
#>

Я не уверен, почему это ...

[Environment]::UserName

... в вашем коде, и в нем дважды, поскольку вы не показывая, как это используется. Тем не менее, вы можете просто использовать встроенную переменную для этого.

$env:USERNAME

About_EnvironmentVariables

...