【发布时间】:2018-10-10 13:39:09
【问题描述】:
我正在尝试创建一个批处理文件来重命名网络驱动器,因为“标签”不起作用。我创建了一个可以工作的 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'"
这给了我以下错误:
在此对象上找不到属性“名称”。验证该属性是否存在并且可以设置...
我关于如何处理这个问题的原始参考来自这里:How to run powershell command in batch file,其中包括与符号。
当我无法让它工作时,我尝试了这里的格式:Run powershell command from cmd
此时,我尝试了几种不同的分号、引号、撇号等排列方式,但均未成功。这似乎是一个简单的问题,感谢您提供的任何帮助。
【问题讨论】:
-
您是否检查过
$DriveMapping是否为$null?这就是这里发生的事情。 -
在这个问题上跳出框框思考,这是我从未尝试过的事情。是否可以通过批处理文件创建 PS1 文件,用 PS 调用 PS1 文件执行 PS1 文件,然后删除创建的 PS1?
-
我刚刚运行了上面的命令,然后我运行了
powershell -Command "$DriveMapping -ne $null"'False'。所以我不认为这个值是空的。 @lit -
@Backin 我喜欢这个建议作为一种解决方法,如果我无法在 CLI 和 PS 之间进行转换,我会记住它。谢谢。
-
三 (3) 行 PowerShell 脚本是否从 .ps1 文件按预期运行?
标签: powershell batch-file