我想创建一个脚本,但有一些问题。这只是开始。我会添加其他命令。我已经尝试通过 Google 和许多示例找到所有答案,但得到的信息太多了。每个人似乎都有自己的解决方案,而当我尝试时,却失败了。
# This script is made to retrieve important information of a system running Windows.
###############################
#Info where to drop information
###############################
$FilePath = "c:\tmp\SysNetInfo\" #location where you will find text file with information
$FileName = "SysNetInfo.txt" #name of my output file
########################
#Starting gathering info
########################
Read-Host 'This script is gathering some useful information from your system.'
Read-Host -Prompt "Press any key to continue"
# Get Ipv4 information:
(gwmi Win32_NetworkAdapterConfiguration | ? {$_.IPAddress -ne $null}).IPAddress
(gwmi Win32_NetworkAdapterConfiguration | ? {$_.IPAddress -ne $null}).DefaultIPGateway
Out-File $FilePath\$FileName
问题:
Read-Host 'This script is gathering some useful information from your system.'
我希望我的代码继续执行到下一行。相反,它会停止并需要用户操作。我请求用户交互的正是这一行之后的行。我可以轻松跳过这部分并将其删除,但我想知道我的问题的答案。我尝试将命令的结果放在文本文件中。首先我只是使用
Out-File C:\tmp\SysNetInfo\SysNetInfo.txt
(但失败了,因为它只给了我默认网关),但我想使用变量 FilePath 和 FileName。
更新:
问题 1 由 David 解决。
问题 2-我收到此错误:
!!! 不要寻找第 25 行。我原来的脚本有一些注释,我没有在这篇文章中添加。
答案1
对于 #2:
很可能您没有SysNetInfo
在 下创建目录c:\tmp
。电源外壳文件写入命令将创建文件但不会创建目录。
使用类似:
If ( -not (Test-Path $FilePath) ) {
mkdir $FilePath -Force
}
在尝试写入您的文件之前。
虽然对于 #1 有一个可能的解决方案,但另一个选择是将所有文本作为提示Read-Host
。Here-strings 是创建多行字符串的一种方法:
$MyPrompt = @'
This script is gathering some useful information from your system.
PRess any key to continue...
'@
Read-Host $MyPrompt
....