Запустите команду Powershell из командного файла для переименования сетевого диска - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь создать командный файл для переименования сетевых дисков, так как «Метка» не работает.Я создал сценарий PS1, который работает, но я пытаюсь поместить сценарий в один пакетный файл, чтобы можно было обрабатывать несколько последовательных команд без PowerShell.Мой PS1 выглядит следующим образом:

$ShellObject = New-Object –ComObject Shell.Application
$DriveMapping = $ShellObject.NameSpace('Z:')
$DriveMapping.Self.Name = 'DataStore'

Моя текущая команда командного файла выглядит следующим образом:

powershell -Command " $ShellObject = New-Object –ComObject Shell.Application; $DriveMapping = $ShellObject.NameSpace('Z:'); $DriveMapping.Self.Name = 'DataStore'"

, которая дает мне следующую ошибку:

PowershellОшибка CLI

Не удается найти свойство «Имя» для этого объекта.Убедитесь, что это свойство существует и может быть установлено ...

Исходная информация о том, как к этому подойти, приведена здесь: Как запустить команду powershell в пакетном файле , который включает амперсанд.

Когда я не мог заставить его работать, я тогда попробовал формат здесь: Запустите команду powershell из cmd

На этом этапе я попробовал несколько различных механизмов полу-колоны, цитаты, апострофы и т. д. без какого-либо успеха.Это кажется простой проблемой, и я ценю любую предложенную помощь.

1 Ответ

0 голосов
/ 10 октября 2018

Переменная $DriveMapping здесь всегда выходит $null.

C:>type drivemap.bat
powershell -NoProfile -Command ^
    "$ShellObject = New-Object -ComObject Shell.Application;" ^
    "$DriveMapping = $ShellObject.NameSpace('Z:');" ^
    "$DriveMapping -eq $null;" ^
    "$DriveMapping.Self.Name = 'DataStore'"

Поэтому свойство Name недоступно.

C:>powershell -NoProfile -Command     "$ShellObject = New-Object -ComObject Shell.Application;"     "$DriveMapping = $ShellObject.NameSpace('Z:');"     "$DriveMapping -eq $null;"     "$Drive
Mapping.Self.Name = 'DataStore'"
True
The property 'Name' cannot be found on this object. Verify that the property exists and can be set.
At line:1 char:128
+ ... 'Z:'); $DriveMapping -eq $null; $DriveMapping.Self.Name = 'DataStore'
+                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : PropertyNotFound

Переменные, такие как $DriveMapping не сохраняются при вызовах PowerShell.При повторном запуске PowerShell переменная $DriveMapping не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...