如果我有一个脚本(script.ps1),如下所示:
$dir = Get-Item "C:\Windows"
$dir
如果我称之为:
$myDir = "script.ps1"
我在$dir
中取回$myDir
对象,如果我使用:
$myDir.Name
我明白了:
Windows
我有一个场景需要使用
调用脚本$myDir = Powershell.exe -File "script.ps1"
有了这个,我最终以字符串数组对象的形式获得输出,而不是以脚本返回的对象的形式,因为命令显然在不同的会话中执行。因此,我不能打电话给任何财产。例如:$myDir.Name
不返回任何内容
我的问题是,如何在上述情况下返回返回的对象类型。即使我执行
$myDir = Powershell.exe -File "script.ps1"
$myDir.Name
应该返回Windows
。它甚至可能吗?
感谢您的帮助。
答案 0 :(得分:1)
你可以尝试这样:
script.ps1 (返回$dir
的值):
$dir = Get-Item "C:\Windows"
return $dir
script2.ps1 (返回$dir
的名称):
$myDir = .\script.ps1
$myDir.Name
$myDir.Name
返回:Windows
答案 1 :(得分:0)
您可以使用powershell.exe的-OutputFormat参数。
#Write the command to file
"get-item c:\windows\" | out-file C:\temp\test.ps1
$justastring = powershell.exe -file c:\temp\test.ps1
#this is a string array
$justastring | get-member
$notastring = powershell.exe -outputformat xml -file c:\temp\test.ps1
#this is a Deserialized.System.IO.DirectoryInfo
$notastring | get-member
此输出也可以保存为文件,稍后再返回。请参阅Import-CliXml和Export-CliXml。请注意,因为它们是序列化对象,所以它们不再是" live"。您习惯看到的一些方法将不存在,属性值也将不再更新。它本质上是命令运行时命令输出的快照。